次のようなログファイルがあります。
2012-05-04 01:10:35;301383027;00133608663205759673480010256592;103;エラー;AbstractTreatment:119;blah1
何とか2
何とか3
2012-05-02 01:00:22;301382163;00133591322220336011720010256592;103;エラー;AbstractTreatment:119;blah4
何とか5
何とか6
2012-05-02 01:00:23;301382163;00133591322220336011720010256592;103;エラー;AbstractTreatment:119;blah7
何とか8
何とか9
日付、重大度、メッセージの 3 つのグループをそれぞれキャプチャした 3 つの一致が必要です。
このパターンを使ってみました
(20[0-9]{2}-[0-2][0-9]-[0-9]{2} [0-2][0-9]:[0-5][0-9]:[0-5][0-9]);[^;]*;[^;]*;[^;]*;([^;]*);(.*)
単一行オプションを有効にすると、1 つの一致 (入力全体) があり、このオプションを無効にすると、メッセージは完全にはキャプチャされません (日付と同じ行の部分のみ)。
正しく取得したい 3 つの値を持つログ エントリと同じ数の一致を取得するにはどうすればよいですか?
編集:次のような一致をキャプチャしようとしています:
日付: 2012-05-04 01:10:35
重大度:エラー
メッセージ: AbstractTreatment:119;blah1
何とか2
何とか3