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

时间:2012-06-19 10:21:59

标签: string lua pattern-matching lua-5.2

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

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

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

但是,由于find(...)未报告错误(对于无效模式"%""(%d"错误 已生成),这让我相信模式"(%d%d)+" 有效模式。

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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