微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Lua gmatch 将捕获的组存储为数组

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

这个想法是我将每个匹配的所有捕获组作为一个数组,这样我就可以对这个数组进行操作,例如将每个捕获组转换为 int。

如何更改以下内容,使其打印 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 有效,但有没有办法不为每个组创建变量?

解决方法

最简单的方法是将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')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。