String 从Lua中的特定字符串提取IP地址
我想从字符串中提取一个特定的值。这是我的绳子String 从Lua中的特定字符串提取IP地址,string,lua,lua-patterns,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.55ip地址 我完成了localip=s:match(“--to destination(%d+。%d+。%d+。%d+)),但没有得到值192.168.19.55。我得到的是空值
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地址
我完成了localip=s:match(“--to destination(%d+。%d+。%d+。%d+))
,但没有得到值192.168.19.55。我得到的是空值
这有错吗?有什么建议吗 使用
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模式中的惰性量词,因此必须转义。另外,
匹配任何字符,因此您也需要对其进行转义,以匹配文字点
有关详细信息,请参见。这也适用于:
ip = s:match("destination%s+(%S+)")
它提取
目的地
后的下一个单词,该单词是一组非空白字符。请注意,如果您确定来自目的地
的始终是IP,您也可以使用。
内部的[…]
不必转义,[%d.]+
匹配一个或多个数字或点。您需要使用%-
转义-
,这是Lua模式中的一个神奇字符。是的,它也适用于IPv6。但最好限制可用字符的数量(例如,()-“
不应被允许)