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]+方法,但是我得到了更多我要求的匹配字符,有人建议如何将这两个示例与一个正则表达式匹配吗?

4

3 回答 3

2

您希望M=\s*(\d+)在 之后立即允许零个或多个空格=,但在数字之后不允许任何空格。

于 2012-04-13T20:53:45.770 回答
0
M=\s?(\d).+

允许在=.

于 2012-04-13T20:55:00.157 回答
0

我相信你有一些拼写错误,应该是

M=[\s|\d]+

于 2012-04-13T20:56:38.910 回答