可能匹配(看似)无效的Lua模式

Bar*_*ers 3 string lua pattern-matching lua-5.2

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

print(string.find("some 4545 text", "(%d%d)+"))
Run Code Online (Sandbox Code Playgroud)

将打印nil(找不到匹配项).

然而,由于find(...)不报告错误(无效的模式"%""(%d"错误产生),它使我相信的模式"(%d%d)+" 有效的.

如果"(%d%d)+"是有效模式,它匹配什么?如果不是,是否有特殊原因没有产生错误?

小智 5

"(%d%d)+" 有效模式.它匹配例如"一些45 + 67文本"或"一些4567+文本"并在第一种情况下捕获"45"而在第二种情况下捕获"67".