【问题标题】:Regex Grab Only First Occurrence of IP from Syslog正则表达式仅从 Syslog 中获取 IP 的第一次出现
【发布时间】:2017-09-13 14:44:18
【问题描述】:

我需要将 RegEX 放入 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 放入一个组中,同时为整个 Syslog 消息创建一个组

【问题讨论】:

  • 如果你像(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})[\s\S]*一样使用它并获取Group 1的值呢?
  • 我试过了,看起来它除了第一组之外什么都抓
  • 啊,我知道它在做什么。对不起,这真的很陌生
  • 所以如果我使用它并将表达式抓取器设置为“组 1”那应该是正确的
  • 我认为是的。尝试并告知。

标签: regex syslog opennms


【解决方案1】:

看来你想要

\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*([\s\S]*)

regex demo

详情

  • \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 组:尽可能多的任意零个或多个字符(* 是一个贪婪的量词)。

【讨论】:

  • 很高兴为您提供帮助。如果您需要有关此模式的更多帮助,请在此处输入一行。
猜你喜欢
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
相关资源
最近更新 更多