正则表达式仅从系统日志中获取 IP 的第一次出现
Regex Grab Only First Occurrence of IP from Syslog
我需要将 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 消息创建一个组
看来你想要
\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 组:尽可能多的任意零个或多个字符(*
是贪婪量词)。
我需要将 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 消息创建一个组
看来你想要
\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 组:尽可能多的任意零个或多个字符(*
是贪婪量词)。