2012-04-13 26 views
0

我試圖從Web服務器日誌的一些信息,它不是很規整,所以我碰上麻煩匹配正則表達式,我想匹配:可選值

例1:

2011-11-29 11:30:23,685 DEBUG [my.fully.qualified.package.Service] Added Action Item: M= 2 Success 

實施例2:

2011-11-29 11:30:23,685 DEBUG [my.fully.qualified.package.Service] Added Action Item: M=10 Success 

此正則表達式適用於實施例1:

(\d\d\d\d-\d\d-\d\d)\s[\d|:]+,\d+\s([A-Z]+)\s\[(.+)\]\s.+:\sM=\s(\d).+ 

其中第一組是日期,第二是日誌級別,第三是類名和第三個是M值。

您可能已經注意到,例如1中,M =之後有位前的空間和其他例子還沒有,這就是爲什麼這個正則表達式是行不通的。

我也嘗試像M=[\s|d]+,但我得到一些更多的字符相匹配,我問,人有建議如何與一個正則表達式匹配這兩個例子?

回答

2

你想M=\s*(\d+),將允許緊接在=之後的零個或多個空格,但不是數字後面的任何空格。

0
M=\s?(\d).+ 

允許爲=後一個可選的空白。

0

我相信你有一些錯字錯, 應該

M=[\s|\d]+