我正在尝试从reference manual学习模式(在string.gmatch
等中实现)在Lua 5.3中的工作方式。
(感谢@greatwolf使用*纠正我对模式项的解释。)
我想做的是匹配'(%(.*%))*'
(由(和)所包围的子字符串;例如'(grouped (etc))'
),以便它记录
或者
但是它什么也不做(online compiler)。
local test = '(grouped (etc))'
for sub in test:gmatch '(%(.*%))*' do
print(sub)
end
最佳答案
另一种可能性-使用递归:
function show(s)
for s in s:gmatch '%b()' do
print(s)
show(s:sub(2,-2))
end
end
show '(grouped (etc))'