鉴于s =" AAABBC", 我们可以使用Lua中的模式匹配来提取第一个相同字符的系列吗? " AAA"是我期待得到的。
这就是我的想法。
local s = "AAABBC"
print(s:match("([A-Z])%1*"))
但它返回零。
请帮忙!感谢。
答案 0 :(得分:0)
不支持Lua模式中的模式内反向引用,您可能要使用一些支持这些结构的外部正则表达式库,例如PCRE。
Egor Skriptunoff suggests a work around使用空字符作为相同字母组之间的字符串内的临时标记:
s:gsub("[A-Z]", "\0%0%0"):gsub("(.)%z%1", "%1"):match"%z.([A-Z]+)"
对于AAABBC
字符串,Egor的解决方案执行以下操作: