所以我有这个日志字符串,我需要捕获时间,类,状态和日志消息。
Jun 18, 2014 5:50:26 PM org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
Jun 18, 2014 5:55:44 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Jun 18, 2014 5:55:47 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
这应该相对简单,我一直在使用正则表达式,但我知道它们的好主意。但是,任何人都可以帮助我吗?
我已经走到了这一步,但出于某种原因,我无法将这两条线组合成一个分组。 http://regex101.com/r/kI9pX7
更新:http://regex101.com/r/sN9qC8 但是,我不想对冒号进行分组,只是显示日志消息。
答案 0 :(得分:0)
我不确定你是否能够匹配这样的线路。相反,首先将日志条目折叠到一行(在INFO之前搜索\ n字符并用空字符串替换它),然后执行你得到的正则表达式。我认为这会奏效。
答案 1 :(得分:0)
以下是针对个别细分的分组。使用上一个段匹配下一个段。
例如,为了找出类名,我使用了时间正则表达式模式,并找到了我使用日志级别模式的日志消息。
日期:
([A-Z][a-z]{2}\s\d{1,})
时间:
(\d{4}\s\d{1,}:\d{1,}:\d{1,}\s[AP]M)
班级名称:
\d{4}\s\d{1,}:\d{1,}:\d{1,}\s[AP]M\s([^\s].*?)\s
日志级别:
(^[^:][A-Z]+:)
日志消息:
^[^:][A-Z]+:\s(.*)$