从Lua字符串中提取IP地址

我想从一个字符串中提取一个特定的值。这是我的字符串

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 666 -j DNAT --to-destination 192.168.19.55

我该如何使用Lua中的string.match从此字符串中提取192.168.19.55 IP地址?

我已经尝试使用local ip = s:match("--to-destination (%d+.%d+.%d+.%d+)")),但我没有得到值192.168.19.55。我得到了空值。

这里有什么错误吗?有什么建议吗?

点赞
用户3832970
用户3832970

使用

local s = "iptables -t nat -A PREROUTING -p tcp -m tcp --dport 666 -j DNAT --to-destination 192.168.19.55"
ip = s:match("%-%-to%-destination (%d+%.%d+%.%d+%.%d+)")
print(ip)
-- 192.168.19.55

参考 在线 Lua 演示

请注意, Lua 模式中的 - 是一种惰性量词,因此必须进行转义。此外, . 匹配任何字符,因此也需要转义,以匹配字面意义上的句点。

详见 Lua 模式网页

2017-07-26 13:28:01
用户107090
用户107090

这也可以:

ip = s:match("destination%s+(%S+)")

它提取了destination后面的下一个单词,一个单词指的是由非空格字符组成的一系列字符。

2017-07-26 14:35:20