String 可能匹配(看似)无效的Lua模式
我知道你不能在卢阿重复比赛分组。例如,如果我想匹配两个连续的String 可能匹配(看似)无效的Lua模式,string,lua,pattern-matching,lua-5.2,String,Lua,Pattern Matching,Lua 5.2,我知道你不能在卢阿重复比赛分组。例如,如果我想匹配两个连续的“45”,我不能: print(string.find("some 4545 text", "(%d%d)+")) 将打印nil(未找到匹配项) 但是,由于find(…)没有报告错误(对于无效模式“%”和“(%d”产生错误),因此我相信模式”(%d%d)+“是有效的 如果“(%d%d)+”是一个有效的模式,它与什么匹配?如果不匹配,是否有特殊原因不产生错误?“(%d%d)+”是一个有效的模式。它匹配例如“一些45+67文本”或“一些4
“45”
,我不能:
print(string.find("some 4545 text", "(%d%d)+"))
将打印nil
(未找到匹配项)
但是,由于find(…)
没有报告错误(对于无效模式“%”
和“(%d”
产生错误),因此我相信模式”(%d%d)+“
是有效的
如果
“(%d%d)+”
是一个有效的模式,它与什么匹配?如果不匹配,是否有特殊原因不产生错误?“(%d%d)+”是一个有效的模式。它匹配例如“一些45+67文本”或“一些4567+文本”,并捕获第一种情况下的“45”和“67”第二个。要匹配连续出现的两个数字串,请使用“(%d+)%1”
谢谢,尽管我已经知道了。我的问题是”(%d%d)+“
模式应该匹配什么(如果它有效)。啊哈,+
只是变成了一个文字而不是一个元字符(这与我以前使用的正则表达式/模式匹配引擎大不相同)。谢谢!我知道的其他正则表达式都有这种模糊性:括号用于分组(在这里+是有意义的)和捕获。在lua模式中,没有分组,因此……但是,是的,手册可以更明确地说明这一点。