不应该("bar"):find("(foo)?bar")回来1, 3?
print(("bar"):find("(foo)*bar"))并且print(("bar"):find("(foo)-bar"))也不会工作.
这是因为Lua模式中的括号(非常不幸)不作为分组构造,仅作为捕获组的分隔符.当你写一个模式(foo)?bar,Lua的解释为"匹配f,o,o,?,b,a,r,拍摄foo一组".这是演示的链接.不幸的是,最接近你可以得到你被通缉的行为f?o?o?bar,这当然也将匹配fbar和oobar其他错误捕获之中.
这段代码
print(("bar"):find("f?o?o?bar"))
Run Code Online (Sandbox Code Playgroud)