Lua gmatch 将被捕获的组存储为数组

我对 Lua 还比较新。对于 gmatch 的每个匹配,我想将捕获组结果放入数组中。

这样我就可以得到每个匹配的所有捕获组,作为一个数组,以便我可以对这个数组进行操作,例如将每个捕获组转换为整数。

我该如何改变以下内容,以便打印 3 2 1

function split_ipv4(str)
    for parts in str:gmatch('(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?), ') do
       print(parts[4])
    end
end

split_ipv4('192.168.0.3, 192.168.0.2, 192.168.0.1')

parts 改为 p1, p2, p3, p4,并打印 p4 可以运行,但是是否有一种不为每个组创建变量的方法?

点赞
用户1847592
用户1847592

最简单的方法是将 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 p1, p2, p3, p4 = addr:match'(%d+)%.(%d+)%.(%d+)%.(%d+)'
      print(p4)
    end
end

split_ipv4('192.168.0.3, 192.168.0.2, 192.168.0.1')
2021-04-26 16:05:30