匹配或什么时候匹配留空

时间:2015-09-22 11:12:32

标签: regex

我的日志格式如下:

select

Sep 22 12:46:39 10.9.0.203 hotspot,debug Hotspot_account: T-34:23:BA:75:C6:7E (10.40.0.135): some action

我的正则表达式:

Sep 22 12:46:39 10.9.0.203 hotspot,error,info,debug Hotspot_account: T-34:23:BA:75:C6:7E (10.40.0.135): some action: detailed info about action

像我想要的那样抓住第二个,现在我需要修改它,以便在行动之后没有任何事情离开现场"消息"空的,并且在行动之后是一些详细信息,将其放入字段" message"喜欢它现在正在做。

这可能,还是应该使用2个单独的正则表来处理这两种消息?

1 个答案:

答案 0 :(得分:2)

您可以在模式的末尾添加一个替换,以匹配行尾(多行模式中的$)或消息。只有在(?P<action>.+)懒惰(即(?P<action>.+?))时,此替换才有效。

这是一个更新的正则表达式:

^.*[^:]*\d\d\:\d\d\:\d\d[^:]*?\s\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\s(?P<service>\w+),(?P<severity>\w+)(.+?):\s(?P<mac>\S+)\s.(?P<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(.+?) (?P<action>.+?)(?:$|[(:,-].(?P<message>[\w\s]+))

请参阅demo(在演示中,我需要在开头使用^.*[^:\n]进行演示)。