1

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

print(("bar"):find("(foo)*bar"))print(("bar"):find("(foo)-bar"))不会工作。

4

2 回答 2

5

这是因为 Lua 模式中的括号(很不幸)不能用作分组结构,只能用作捕获组的分隔符。当你写一个 pattern(foo)?bar时,Lua 将它解释为“match f, o, o, ?, , b, a, r, capture fooin a group”。这是一个演示的链接。不幸的是,您可以获得的最接近您想要的行为的是f?o?o?bar,这当然也可以匹配fbaroobar,以及其他错误捕获。

这段代码

print(("bar"):find("f?o?o?bar"))

返回 1 3

于 2013-01-20T13:22:15.017 回答
0

您正在搜索 string"(foo)bar""(foobar"from string "bar",问号?仅指向最后一个字符。

如果您希望它指向整个单词,请[]改用:("bar"):find("[foo]?bar")

于 2013-01-20T13:08:49.930 回答