2009-08-11 5 views
2

テキスト内に倍精度の単語を入れたいのですが、(\w+) +\1を使用していますが、テキストには「abc abc」しか見つかりません。私も見つけたい正規表現で倍精度語を検索する

「ABC DEF ABC DEF」

おかげで、..あなたはそれが一致するが、それはそれを変更するような単純な可能性が何をしたい

+0

どの正規表現を使用していますか?何語? – gnarf

+0

実際にこれを通常の言語で行うことはできますか?このように見えるのは、括弧のようには不可能です。従来の正規表現の別の有名な不可能 – MSalters

+0

逆正規表現(正式な正規表現の機能ではなく、最も現代的な正規表現エンジンの機能)で可能です。 – Amber

答えて

4

次の正規表現は、文字の任意の反復配列と一致します:あなたが唯一の間に空白が、何もない反復配列をしたい場合は、代わりにこれを使用し、その後、

/(.+).*?\1/ 

を:

/(.+)\s+?\1/ 

をあなたの場合空白で区切られた単語だけが必要な場合は、(.+)(\w+)に変更します。

/(\w+)\s+?\1/ 
0123あなたは句読点のようなものを無視した単語を見たい場合は

は、単語の境界は、より便利かもしれません:

/(\b\w+?\b)\.+?\b\1\b/ 
+0

。+?と一致しません。 "wikiwiki" –

+0

彼は言葉が欲しいと思う、これは同じ文字セットの2つの空白にも一致します。 – Salgar

+0

質問者が希望する動作に依存しますが、オプションとして追加します。 – Amber

1

わからない:

(\w+) +.*\1

.*は、その間にある余分な文字と一致します。多分 "(\w.*) +\1"

(\w+) +.*\1.*

+0

ありがとうあなたの答えは、それは仕事をしなかった。 今、私は "((\ w |)+)+ \ 1"を試しました!それはまた ""(3つ以上のスペース)を見つける。 – WhoSayIn

1

:あなたが一致する場合

これは 'ABC DEF ABC DEF' の 'ABC DEF ABC' の部分と一致しますが、それはすべてにそれを変更しますか?それともあなたのニーズにはあまりにも一般的になりますか?

"(\w+(?:\s+\w+)*) +\1"も有効です。

+0

ありがとう!!それは私が望むように優れた作品です! – WhoSayIn

関連する問題