不应("bar"):find("(foo)?bar")
返回1, 3
?
print(("bar"):find("(foo)*bar"))
和print(("bar"):find("(foo)-bar"))
也不起作用。
答案 0 :(得分:5)
这是因为Lua模式中的括号(非常不幸)不作为分组构造,仅作为捕获组的分隔符。当您编写模式(foo)?bar
时,Lua会将其解释为“匹配f
,o
,o
,?
,b
,{{1 }},a
,捕获组中的r
“。这是一个link to a demo。不幸的是,您最接近所需行为的是foo
,当然也会匹配f?o?o?bar
和fbar
以及其他错误的捕获。
此代码
oobar
答案 1 :(得分:0)
您正在从字符串"(foo)bar"
中搜索字符串"(foobar"
或"bar"
,问号?
仅指向最后一个字符。
如果您希望它指向整个单词,请改用[]
:("bar"):find("[foo]?bar")