0

次の文字列を正規表現しようとしています

 : hostname: Oct 16 03:49:39.515: %BLA: message

そして、「:」と最後の「:」の後の最後の文字列の間の文字列を取得したい

使用する: (.+?):と が得られhostnameます。

残念ながらOct 16 03:49:39.515%BLAおよび を取得できませんmessage。部分文字列ごとに単一の正規表現が必要です。すべてを1つにしたくありません。

4

1 に答える 1

3

graylog2Javaで書かれているので、ルックアラウンドがうまくいくはずです。この正規表現を試してください:

(?<=: )(.+?)(?=: |$)

正規表現のデモ


更新: 4 つのコンポーネントに対して 4 つの異なる正規表現が本当に必要な場合は、次を使用します。

正規表現 1:

(?<=: )(.+)(?=(?:: .+){3}[^:]*$)

正規表現 2:

: [^:]*: (.+?)(?=: )

正規表現 3:

: [^:]*: .+?: ([^:]+)

正規表現 4:

(?<=: )([^:]+)$
于 2014-10-16T11:20:42.640 に答える