3

我是模式匹配的初学者。我了解到 Lua 的模式匹配与标准略有不同,因此我一直无法找到一种方法将针对此问题的正则表达式解决方案改编为 Lua 代码。

我正在尝试替换字符串中重复字符的最长子字符串。

例如,在 abbbccccc 中,它会找到 a、bbb、ccccc。

这不起作用,它只匹配整个字符串:

string.gsub(inputString, "(.+)", function (n) return replace(n) end)

我可以看到为什么它不起作用,但我找不到其他方法。

我知道我可以使用循环轻松解决这个问题,但我正在尝试使用正则表达式等进行更多练习。

感谢您的帮助。

4

1 回答 1

1

它不能用单一的模式来完成。
使用模式链:

inputString:gsub('.','\0%0%0'):gsub('(.)%z%1','%1'):gsub('%z.(%Z+)',replace)
于 2013-03-25T07:02:43.387 回答