我正在尝试从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]+
的内容,但我得到了一些与我要求的匹配的字符,有人建议如何将这两个示例与一个正则表达式匹配?
答案 0 :(得分:2)
您希望M=\s*(\d+)
在=
之后立即允许零个或多个空格,但不允许在数字后面的任何空格。
答案 1 :(得分:0)
M=\s?(\d).+
允许=
之后的可选空格。
答案 2 :(得分:0)
我相信你有一些拼写错误, 它应该是
M=[\s|\d]+