正規表現を使用して syslog メッセージから programname を抽出するにはどうすればよいですか? syslog メッセージを処理するために正規表現を受け入れる Java ストリーム処理モジュールがあります。
ログ行は次のようになります。
2013-10-14T22:05:29+00:00 hostname sshd[6359]: Connection closed by 192.168.1.10
2013-10-14T22:05:29+00:00 hostname sshd:3322 Connection closed by 192.168.1.10
2013-10-14T22:05:29+00:00 hostname sshd/6359 Connection closed by 192.168.1.10
2013-10-14T22:05:29+00:00 hostname sshd Connection closed by 192.168.1.10
2013-10-14T22:05:29+00:00 hostname SSHD[1133] Connection closed by 192.168.1.10
2013-10-14T22:05:29+00:00 hostname SSH.D[6359]: Connection closed by 192.168.1.10
文字列抽出プロセスは、次のようにする必要があります: スペースで区切られた 3 番目の部分文字列を取得し、、、、またはスペースで終わる部分文字列を[
抽出し:
ます/
したがって、最初の 4 つのログ サンプルでは、抽出された文字列はsshd
、5 番目SSHD
と 6 番目になりSSH.D
ます。これは正規表現で可能ですか?
編集:
私が試したのは((?:[A-Za-z][A-Za-z0-9_.-]+))
うまくいくようですが、正直なところ、正規表現の例を変更し、オンラインツールを使用してユースケースに合うように微調整しましたが、どのように機能したかは正確にはわかりません.