我想从字符串中提取特定值。这是我的字符串
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。我的价值空虚。
这有什么错误吗?有什么建议 ?
答案 0 :(得分:3)
使用
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
请参阅online Lua demo。
请注意,-
是Lua模式中的延迟量词,因此必须进行转义。此外,.
匹配任何字符,因此您也需要将其转义以匹配文字点。
答案 1 :(得分:3)
这也有效:
xml.instruct!
xml.some_tag {
xml.simple_string "some string"
xml.simple_node {
xml.foo "..."
xml.bar "..."
}
}
它提取ip = s:match("destination%s+(%S+)")
之后的下一个单词,一个单词是非空白字符的运行。