Regex仅从Syslog获取第一次出现的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}

我需要将正则表达式放入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}\.\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
    -单词边界
  • (\d{1,3}(?:\.\d{1,3}){3})
    -第1组:
    • \d{1,3}
      -1到3位数字
    • (?:\。\d{1,3}{3}
      -点出现3次,然后出现1到3位(
      \d{3}
  • \s*
    -0+空格
  • ([\s\s]*)
    -第2组:尽可能多的零个或多个字符(
    *
    是贪婪的量词)

如果你像
(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})[\s\s]*
那样使用它并抓取组1的值会怎么样?我试过了,看起来它抓取了除了组1以外的所有东西啊,我知道它在做什么。抱歉,这是一个新问题,所以如果我使用它并将表达式抓取器设置为“group1”,应该可以正确执行,我想是的。试着让我知道。很乐意帮忙。如果你在这个模式上需要更多的帮助,就在这里写一行。