Arrays Lua gmatch将捕获的组存储为阵列
我对Lua还不太熟悉。对于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
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模式中。