Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 从Lua中的特定字符串提取IP地址_String_Lua_Lua Patterns - Fatal编程技术网

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。但最好限制可用字符的数量(例如,
()-“
不应被允许)