【问题标题】:Lua pattern matching, repeating characterLua模式匹配,重复字符
【发布时间】:2013-03-25 05:34:52
【问题描述】:

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

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

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

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

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

我知道为什么它不起作用,但我找不到其他方法。

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

感谢您的帮助。

【问题讨论】:

    标签: regex lua


    【解决方案1】:

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

    inputString:gsub('.','\0%0%0'):gsub('(.)%z%1','%1'):gsub('%z.(%Z+)',replace)
    

    【讨论】:

    • 我希望只调用一次 gsub,但我想这样就可以了。
    • @flameiguana - 用单一模式完成任务似乎是不可能的。
    • 不是%Z = [^%z]吗?
    • @AndréLevy - 谢谢。改进。
    猜你喜欢
    • 2020-10-27
    • 2013-07-26
    • 1970-01-01
    • 2018-03-11
    • 2021-06-07
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    相关资源
    最近更新 更多