【发布时间】:2019-06-11 14:02:30
【问题描述】:
我正在编写一个 rsyslog 模板来从事件中过滤 src 和 dst ip,但是正则表达式只返回第一个匹配项。
示例事件:
ulogd[20230]: id="2002" severity="info" sys="SecureNet" sub="packetfilter" name="Packet accepted" action="accept" fwrule="89" initf="eth1" outitf ="eth0" srcmac="aa:bb:cc:dd:ee:2c" dstmac="00:11:22:ff:cc:aa" srcip="10.10.1.250" dstip="192.168.0.1" 原型= "6" length="52" tos="0x00" prec="0x00" ttl="127" srcport="64405" dstport="1133" tcpflags="ACK"
模板语法
%msg:R,ERE,0,FIELD:([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})+--end%
正则表达式
([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})+
【问题讨论】:
-
给我们更多更好的真实样本数据。并给我们纯化的正则表达式。它看起来不像正则表达式。我收到带有您的示例数据和正则表达式的 NO MATCH。
-
可以分享一份样本日志吗?
-
贪婪也是另外一回事。最后你不需要
+。好吧,一切都很好here -
不能使用 /g - 我想我可以用 (regex)+ 覆盖多个匹配项
-
no (regex)+ 只是意味着您的正则表达式模式数学化并且可以匹配更多时间在前面的后面。 (abc)+ 将匹配 "abc", "abcabc" 但不匹配 "abcdefabc" 或 "abc def abc" +