我是模式匹配的初学者。我已经了解到Lua的模式匹配与标准略有不同,所以我无法找到一种方法来将regex解决方案适应这个问题转换为Lua代码。
我正在尝试替换字符串中重复字符的最长子字符串。
例如,在abbbccccc中,它会找到a,bbb,ccccc。
这不起作用,它只匹配整个字符串:
string.gsub(inputString, "(.+)", function (n) return replace(n) end)
我可以看到为什么它不起作用,但我找不到另一种方式。
我知道我可以使用循环轻松解决这个问题,但我正在尝试使用正则表达式进行更多练习。
感谢您的帮助。
答案 0 :(得分:1)
inputString:gsub('.','\0%0%0'):gsub('(.)%z%1','%1'):gsub('%z.([^%z]+)',replace)