Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays Lua gmatch将捕获的组存储为阵列_Arrays_String_Lua_Lua Patterns - Fatal编程技术网

Arrays Lua gmatch将捕获的组存储为阵列

Arrays Lua gmatch将捕获的组存储为阵列,arrays,string,lua,lua-patterns,Arrays,String,Lua,Lua Patterns,我对Lua还不太熟悉。对于gmatch的每个匹配,我想将捕获组结果放入一个数组中 这样我就可以得到每个匹配的所有捕获组,作为一个数组,这样我就可以在这个数组上执行操作,例如,将每个捕获组转换为一个int 如何更改以下内容,使其打印321 功能拆分\u ipv4(str) 对于str中的零件:gmatch(“(%d%d?%d?)。(%d%d?%d?)。(%d%d?%d?)。(%d%d?)。”)是否 打印(第[4]部分) 结束 结束 拆分ipv4('192.168.0.3、192.168.0.2、1

我对Lua还不太熟悉。对于
gmatch
的每个匹配,我想将捕获组结果放入一个数组中

这样我就可以得到每个匹配的所有捕获组,作为一个数组,这样我就可以在这个数组上执行操作,例如,将每个捕获组转换为一个int

如何更改以下内容,使其打印
3
2
1

功能拆分\u ipv4(str)
对于str中的零件:gmatch(“(%d%d?%d?)。(%d%d?%d?)。(%d%d?%d?)。(%d%d?)。”)是否
打印(第[4]部分)
结束
结束
拆分ipv4('192.168.0.3、192.168.0.2、192.168.0.1')

parts
更改为
p1、p2、p3、p4
并打印
p4
是可行的,但有没有办法不为每组创建变量?

最简单的方法是将
parts
更改为
p1、p2、p3、p4

但如果是可变恐惧症:

function split_ipv4(str)
   for addr in str:gmatch'%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?' do
      local parts = {addr:match'(%d+)%.(%d+)%.(%d+)%.(%d+)'}
      print(parts[4])
    end
end

split_ipv4('192.168.0.3, 192.168.0.2, 192.168.0.1')

+谢谢你的回答。我也想到了这个想法,但就像你说的,对于IPv4来说,它并不比p1、p2、p3、p4好多少。我想在IPv6的情况下会更好。IPv6不包含在单一的Lua模式中。