Regex仅从Syslog获取第一次出现的IP
我需要将正则表达式放入OpenNMS配置文件中。我正试图从系统日志消息中获取第一个IP地址。格式为:Regex仅从Syslog获取第一次出现的IP,regex,syslog,opennms,Regex,Syslog,Opennms,我需要将正则表达式放入OpenNMS配置文件中。我正试图从系统日志消息中获取第一个IP地址。格式为: Sep 13 08:36:37 192.168.75.254 %ASA-4-106023: Deny tcp src outside:144.5.5.255/ 56607 dst inside:192.168.75.102/23 by access-group "outside_access_in" [0x0, 0x0] 到目前为止,我已经: \d{1,3}\.\d{1,3}\.\d{1,3}
Sep 13 08:36:37 192.168.75.254 %ASA-4-106023: Deny tcp src outside:144.5.5.255/
56607 dst inside:192.168.75.102/23 by access-group "outside_access_in" [0x0, 0x0]
到目前为止,我已经:
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
这将获取所有三个IP地址。我如何将其限制为一个
在NMS配置文件中,我需要填写以下行:
forwarding-regexp="regex here"
matching-group-host="2"
matching-group-message="3"
所以我需要一个正则表达式,它只将第一个IP放入一个组中,同时为整个系统日志消息创建一个组
\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*([\s\S]*)
见
详细信息
-单词边界\b
-第1组:(\d{1,3}(?:\.\d{1,3}){3})
-1到3位数字\d{1,3}
-点出现3次,然后出现1到3位((?:\。\d{1,3}{3}
)\d{3}
-0+空格\s*
-第2组:尽可能多的零个或多个字符(([\s\s]*)
是贪婪的量词)*
(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})[\s\s]*
那样使用它并抓取组1的值会怎么样?我试过了,看起来它抓取了除了组1以外的所有东西啊,我知道它在做什么。抱歉,这是一个新问题,所以如果我使用它并将表达式抓取器设置为“group1”,应该可以正确执行,我想是的。试着让我知道。很乐意帮忙。如果你在这个模式上需要更多的帮助,就在这里写一行。