从Lua中的特定字符串中提取IP地址

时间:2017-07-26 13:15:25

标签: string lua lua-patterns

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

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。我的价值空虚。

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

2 个答案:

答案 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模式中的延迟量词,因此必须进行转义。此外,.匹配任何字符,因此您也需要将其转义以匹配文字点。

请参阅Lua patterns Web page

答案 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+)") 之后的下一个单词,一个单词是非空白字符的运行。