如何使用正則表達式從系統日誌消息中提取程序名?我有一個Java流處理模塊,它接受正則表達式來處理系統日誌消息。使用正則表達式提取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
字符串提取過程應該是:利用由空間限定的第三子串,並提取子串,在[
,:
,/
或空白結束
所以第4個日誌樣品中,將所提取的字符串將是sshd
,第五SSHD
和第六SSH.D
。這是否可能與正則表達式?
編輯:
我試圖爲((?:[A-Za-z][A-Za-z0-9_.-]+))
,它似乎工作,但說實話,我修改了一個例子正則表達式和使用的在線工具來調整它,直到它符合我的使用情況,但我不知道到底它是如何工作的。
是的。這是可能的。你有什麼嘗試? – Mena
我試過的是「((?:[A-Za-z] [A-Za-z0-9 _.-] +))」,它似乎工作,但說實話,我修改了一個示例正則表達式,並使用在線工具來調整它,直到它適合我的用例,但我不確定它是如何工作的。 –