我的日志格式如下:
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个单独的正则表来处理这两种消息?
答案 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]
进行演示)。