0

Web サーバーのログからいくつかの情報を抽出しようとしていますが、あまり構造化されていないため、問題が発生しました。一致させようとしています:

例 1 :

2011-11-29 11:30:23,685 DEBUG [my.fully.qualified.package.Service] Added Action Item: M= 2  Success

例 2 :

2011-11-29 11:30:23,685 DEBUG [my.fully.qualified.package.Service] Added Action Item: M=10  Success

この正規表現は、例 1 で機能します。

(\d\d\d\d-\d\d-\d\d)\s[\d|:]+,\d+\s([A-Z]+)\s\[(.+)\]\s.+:\sM=\s(\d).+

最初のグループは日付、2 番目はログ レベル、3 番目はクラス名、3 番目は の値ですM

例 1 では M= の後に数字の前にスペースがあり、他の例ではスペースがないため、この正規表現が機能していないことに気付いたかもしれません。

私は次のようなことを試しましM=[\s|d]+たが、私が要求したいくつかの文字が一致しました。これらの例の両方を1つの正規表現と一致させる方法を誰かが提案していますか?

4

3 に答える 3

2

M=\s*(\d+)の直後にゼロ以上の空白を許可しますが=、数字の後の空白は許可しません。

于 2012-04-13T20:53:45.770 に答える
0
M=\s?(\d).+

の後にオプションの空白を許可します=

于 2012-04-13T20:55:00.157 に答える
0

タイプミスがあると思いますが、そうあるべきです

M=[\s|\d]+

于 2012-04-13T20:56:38.910 に答える