提取表达式中的第二个 IP 地址
Extract second IP address in expression
我想使用正则表达式从以下表达式中提取第二个 IP 地址(DST
的值):
kernel: DROP IN=eth0
OUT= MAC=80:8d:8b:83:85:d0:f2:fc:bc:88:3e:f3:08:00
SRC=111.111.111.111
DST=222.222.222.222
LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=10520 DF PROTO=TCP
SPT=43219 DPT=10051 SEQ=4284041495 ACK=0 WINDOW=14600
RES=0x00 SYN URGP=0 OPT (020405B40402080A7F8A63E80000000001030306)
我使用以下正则表达式提取 SRC
:
^.+?((?:\d+\.){3}\d+).+$
我无法找出提取第二个IP所需的表达式(DST
)
像这样重复你得到的东西两次就可以了
^.+?((?:\d+.){3}\d+).*?((?:\d+.){3}\d+).+$
但是捕获所有 IP 地址的更好的正则表达式是
((?:\d{1,3}\.){3}\d{1,3})
您似乎曾尝试匹配 IP 地址中的句点,但忘记转义它们。
没有必要,但可以使用 {1,3}
代替 +
来限制匹配数字的次数。
我想使用正则表达式从以下表达式中提取第二个 IP 地址(DST
的值):
kernel: DROP IN=eth0
OUT= MAC=80:8d:8b:83:85:d0:f2:fc:bc:88:3e:f3:08:00
SRC=111.111.111.111
DST=222.222.222.222
LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=10520 DF PROTO=TCP
SPT=43219 DPT=10051 SEQ=4284041495 ACK=0 WINDOW=14600
RES=0x00 SYN URGP=0 OPT (020405B40402080A7F8A63E80000000001030306)
我使用以下正则表达式提取 SRC
:
^.+?((?:\d+\.){3}\d+).+$
我无法找出提取第二个IP所需的表达式(DST
)
像这样重复你得到的东西两次就可以了
^.+?((?:\d+.){3}\d+).*?((?:\d+.){3}\d+).+$
但是捕获所有 IP 地址的更好的正则表达式是
((?:\d{1,3}\.){3}\d{1,3})
您似乎曾尝试匹配 IP 地址中的句点,但忘记转义它们。
没有必要,但可以使用 {1,3}
代替 +
来限制匹配数字的次数。