次の正規表現を書く簡単な方法はありますか?具体的には、「?」ですべてのグループ化を避けます。オプションの文字?
/^w(o(r(d)?)?)?$/
次のように一致する必要があります。
- w
- を
- wor
- 語
単なる例として、一致してはなりません。
- wr
- wd
- ウー
- wrr
- wodr
- wrdo
- オード
- rd
- odr
この特定のケースでは、それは非常に短い言葉ですが、この次の例で、物事が非常に速く醜くなる可能性があることがわかります。
垂直または水平、および各単語の最初の連続文字の任意の量に一致する正規表現:
/^h(o(r(i(z(o(n(t(a(l)?)?)?)?)?)?)?)?)?|v(e(r(t(i(c(a(l)?)?)?)?)?)?)?)$/
私はルビーを使っていますが、この質問は正規表現を使用するすべての言語に当てはまると思いますので、どの言語の回答にも感謝します。しかし、perlについてはあまり知りません...
私は私のような質問を1つだけ見つけましたが、とにかく、これ以上の解決策は示されていません。ここにリンクがあります。