使用正则表达式解析Sonicwall日志文件

时间:2014-05-27 20:00:13

标签: regex parsing logging firewall

我的另一个正则表达式问题。我有一个这样的日志文件:

1 2014-04-24T12:10:25.661222+02:00 id=firewall sn=0017C514CD80 - - - sn=0017C514CD80 time="2014-04-24 12:02:22" fw=4.3.2.1 pri=6 c=1024 m=537 msg="Connection Closed" f=9 n=9506215 src=10.126.80.94:3995:X0 dst=1.2.3.4:80:X1 proto=tcp/http sent=2354 rcvd=1982

我想拆分" src = 10.126.80.94:3995:X0"分三部分。 IP,端口和接口。我自己尝试了很多,但我无法弄清楚。

这个正则表达式匹配所有内容:

src=([^ ]*)

这只会匹配IP:

src=([^:]*)([^:]*)

我已经得到了。

任何人都可以给我一个提示,如何匹配端口和界面?

1 个答案:

答案 0 :(得分:1)

你真的很接近,只是错过了:分割你的两个非:个字符的捕获组。我还为界面添加了一个组,它将是任何非空白字符(\S === [^\r\n\t\f ]):

src=([^:]*):([^:]*):(\S*)

Demo


如果您无法使用\S*,则可以将其替换为[^ ]*,因为我们真的只关心在X0之后到达空间时停止:

src=([^:]*):([^:]*):([^ ]*)