0

ログファイルの特定のパターンをチェックする正規表現を

文字列は次のようになります。

05-20-2013 15:57:09.334715 [del1-dhp-26330] Read 100 entries from syslog file test

そして私の正規表現関数は

\d\d-\d\d-\d\d\d\d \d\d:\d\d:\d\d.\d\d\d\d\d\d [@"+agentName+"]"+" Read 100 entries from "+flatFileLogSourceName;

ここで、エージェント名とフラットファイルログソース名は、文字列内のそれぞれの値を取得します。

[x-y]しかし、範囲が逆順であるというエラーが表示されます..これは、エージェント名にハイフンが含まれているためです。

だから私は基本的にハイフンを文字列のようにエスケープできる方法を探してい@ます\

4

2 に答える 2

2

あなたが読んだエラーメッセージについては、C#の実装はわかりませんが、ほとんどの正規表現のフレーバーと同じように書く"[@"+agentName+"]"べきだと思います。"\[@"+agentName+"\]"

簡単な説明

角かっこは、一致する有効な文字の一種のコレクションであるクラスを形成します。[0-9]これらのクラスは、10 進数表記で数値を照合する場合や、8 進数表記で数値を照合する場合に範囲を使用できます[0-7][a-e]そして、a、b、c、d、または e に一致する一連の文字に一致します。ただし、範囲を逆順にすることはできません。[a-z]有効な範囲ですが、そうでは[z-a]ありません。文字クラスを作成しないようにするには、バックスラスクで角括弧をエスケープする必要があります

于 2013-05-20T14:27:06.990 に答える
1

\ は正規表現のエスケープ文字です。

これはうまくいくはずです:

"\d{2}\-\d{2}\-\d{4} \d{2}:\d{2}:\d{2}\.\d{6} \["+agentName+"\] Read 100 entries from "+flatFileLogSourceName

編集:この文を見ると、あなたが実際に何を求めているのか混乱しますが:

ここで、エージェント名とフラットファイルログソース名は、文字列内のそれぞれの値を取得します。

正規表現の一致からデータを取得しようとしている場合、これが役立ちます: http://www.regular-expressions.info/named.html

于 2013-05-20T14:05:32.387 に答える