我的另一个正则表达式问题。我有一个这样的日志文件:
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=([^:]*)([^:]*)
我已经得到了。
任何人都可以给我一个提示,如何匹配端口和界面?
答案 0 :(得分:1)
你真的很接近,只是错过了:
分割你的两个非:
个字符的捕获组。我还为界面添加了一个组,它将是任何非空白字符(\S
=== [^\r\n\t\f ]
):
src=([^:]*):([^:]*):(\S*)
如果您无法使用\S*
,则可以将其替换为[^ ]*
,因为我们真的只关心在X0
之后到达空间时停止:
src=([^:]*):([^:]*):([^ ]*)