可能匹配(表面上)无效的Lua模式

我知道 Lua 中不能重复匹配组。例如,如果我想匹配两个连续的 "45",我不能这样做:

print(string.find("some 4545 text", "(%d%d)+"))

这会输出 nil(没有找到匹配)。

然而,由于 find() 没有报告错误(对于无效模式 "%""(%d" 会产生错误),这使我相信模式 "(%d%d)+" 是合法的。

如果 "(%d%d)+" 是一个有效的模式,它匹配什么?如果不是,为什么不会产生错误?

点赞
用户1465882
用户1465882

(%d%d)+ 是一个有效的模式。例如,它可以匹配 "some 45+67 text" 或者 "some 4567+ text",并且在第一个例子中捕获 "45",在第二个例子中捕获 "67"。

2012-06-19 10:35:33
用户107090
用户107090

为了匹配连续出现的数字字符串,请使用"(%d+)%1"

2012-06-19 10:41:25