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 に答える