我希望可选的平衡括号可以成为我的匹配部分。是否只使用普通模式就可以实现呢? 我的测试代码如下:
for m in string.match('str{},str2{str3{}},str4,str5{a{}b{}}', '[^,]-%b{}') do
print(v)
end
输出结果为:
str{}
str2{str3{}}
str5{a{}b{}}
缺失的部分是str4
我以为模式[^,]-%b{}?
可以实现,但是%bxy和?都是模式项,所以它当然不起作用,但是有没有办法仍然可以实现呢?
我现在的解决方法是:
local stored
for e in string.gmatch(str, '[^,]+') do
if stored then
e = stored .. ',' .. e
end
if string.match(e, '^[^{}]+$') or string.match(e, '^[^{}]*%b{}[^{}]*$') then
print(e)
stored = nil
else
stored = e
end
end
str5{a{},b{}}
吗? - undefined