次の文字列を正規表現しようとしています
: hostname: Oct 16 03:49:39.515: %BLA: message
そして、「:」と最後の「:」の後の最後の文字列の間の文字列を取得したい
使用する: (.+?):
と が得られhostname
ます。
残念ながらOct 16 03:49:39.515
、%BLA
および を取得できませんmessage
。部分文字列ごとに単一の正規表現が必要です。すべてを1つにしたくありません。
graylog2
Javaで書かれているので、ルックアラウンドがうまくいくはずです。この正規表現を試してください:
(?<=: )(.+?)(?=: |$)
更新: 4 つのコンポーネントに対して 4 つの異なる正規表現が本当に必要な場合は、次を使用します。
正規表現 1:
(?<=: )(.+)(?=(?:: .+){3}[^:]*$)
正規表現 2:
: [^:]*: (.+?)(?=: )
正規表現 3:
: [^:]*: .+?: ([^:]+)
正規表現 4:
(?<=: )([^:]+)$