2016-10-18 80 views
1

美好的一天! 我有這種格式的日誌:Fluentd源日誌格式的正則表達式

[14-10-2016 00:00:04,004 INFO WebService:1603] [172.16.1.10] [0000077000013] [ID=N0000077000013] [N=147639237688] REQUEST getStatus 

我想出了這個正則表達式:從信息直到ID =,ID,N,和最後一部分

/(?<time>\d{1,2}-\d{1,2}-\d{4} \d{1,2}:\d{1,2}:\d{1,2},\d{3}) (?<message1>[=]+) .(?<ID>ID=\w*) .(?<N>N=\w*) (?<messages>.*)/ 

我想,以確定日期,部分,但流利返回我「模式不匹配」​​。正則表達式的每個部分都在流式正則表達式測試網站上單獨工作。

這將是一個正則表達式? 謝謝。

+0

嘗試'(

+0

謝謝Wiktor的,它的工作。 –

回答

1

您可以使用

(?<time>\d{1,2}-\d{1,2}-\d{4} +\d{1,2}:\d{1,2}:\d{1,2},\d{3}) +(?<message1>[A-Z]+) .*\[ID=(?<ID>\w+)] +\[N=(?<N>\w+)] (?<messages>.*) 

regex demo

請注意,我的空間後添加+匹配一米或多處,並調整組邊界IDN組。

此外,您message1小組模式[=]+比賽1+ =符號,當你有INFO串那裏。我把它改成[A-Z]+匹配1個或多個大寫ASCII字母。

最後,因爲有一羣message1ID之間的文本,你需要確保消費這些字符,因此,我用.*(0+任何字符不是斷行符除外)。