为什么("bar"):find("(foo)?bar")返回nil?

Ale*_*erg 1 lua lua-patterns

不应该("bar"):find("(foo)?bar")回来1, 3

print(("bar"):find("(foo)*bar"))并且print(("bar"):find("(foo)-bar"))也不会工作.

das*_*ght 5

这是因为Lua模式中的括号(非常不幸)不作为分组构造,仅作为捕获组的分隔符.当你写一个模式(foo)?bar,Lua的解释为"匹配f,o,o,?,b,a,r,拍摄foo一组".这是演示链接.不幸的是,最接近你可以得到你被通缉的行为f?o?o?bar,这当然也将匹配fbaroobar其他错误捕获之中.

这段代码

print(("bar"):find("f?o?o?bar"))
Run Code Online (Sandbox Code Playgroud)

返回1 3