2016-08-28 10 views
6

この正規表現^x{3}y{3}$を使用して、この文字列の例を確認しています。xの数字はyの数字と同じです(私の例では3です)。しかし問題は、繰り返しの数がわからないことです(0から10までの範囲です)。したがって、3は何か抽象的に置き換えなければなりません。regexとのグループ一致の数を再利用するには?

私は^x*y*$または^x{0,10}y{0,10}$を使用することができますが、xの数s「のsはyの数が異なる」のとき、これは動作しません。

私は\1のようなものを探していますが、一致するグループの再利用に使用されますが、私の場合はxのグループの一致数を再利用したいと考えています。

+0

正規表現では使用できません。あなたはそれのための外部言語の助けが必要です。完全性のために、あなたが使っている正規表現エンジンを教えてください。 (これは、回文問題のサブセットだと思いますが、正規表現では解決できません。http://stackoverflow.com/questions/233243/how-to-check-that-a-string-is- a-palindrome-using-regular-expressions) – Tomalak

+0

@Tomalak彼はリンクをくれました:https://regex101.com/r/rP7wB8/2私は彼がPCREを使用していると思いますか? –

+0

@Nehal分かりません。そのリンクは結論を導くには不十分です。 – Tomalak

答えて

2

あなたは固定の上限を持っているので、あなただけの手書きからマッチを一覧表示できます。

^(x{10}y{10}|x{9}y{9}|x{8}y{8}|x{7}y{7}|x{6}y{6}|x{5}y{5}|x{4}y{4}|x{3}y{3}|x{2}y{2}|xy)?$ 

?はケースあなたの「それぞれのゼロ」を扱う。)

を明らかに場合xyは実際には長いですが、ここでは多くの繰り返しがあります。

もう1つの方法は、xyを空の文字列に置き換えて、空の文字列で終わることを確認することです(ペアを削除するたびに別のペアが表示されるため)。

+0

ありがとうございます、しかし10例のように、私は実際の上限が何であるかを確認する必要がありますが、それは100以上です。 – Termininja

+1

@Termininjaこの式を自動生成できるので、何回繰り返すかは関係ありません。 – Tomalak

+0

実用的なアプローチ、非常に良い。 – Tomalak

関連する問題