如何解决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 举报,一经查实,本站将立刻删除。