2016-04-17 2 views
0
Hello Foo Bar World Foo World Bar Test Foo 
foo bar 

が、私は私の正規表現は、非重複単語以外のすべてを一致させたい期待:Foo Bar World
それが一致していなければならない:Hello Testマッチがすべての単語が非重複

これはテスト文字列内のすべての次の単語と一致する必要がありますそれらは重複していないからです。

どうすればこの問題を解決できますか?

+0

これは正規表現にとっては良い仕事ではありません。あなたは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)を持っているかもしれません。正規表現に焦点を当てずに、あなたが何をしたいのか、あなたが試したことを説明すれば、より良い答えを得るでしょう。 –

+0

これらの単語を見つけるために「理論的パターン」を書くことはできますが、問題は、この種のパターンで使用されるアルゴリズムの複雑さがテキストサイズ(正確な単語の数)とともに指数関数的に増加することです。したがって、これらのパターンでこの種の問題を解決することはできません。より簡単な方法は、テキストを分割された単語に分割する(または各単語に一致させる)ことで、2回目の出現回数を数えることです(できるだけイテレータを使用し、キー)。 –

+0

私はこれが正規表現かどうかで解決できるかどうかだけは興味がありました。私はすでにそれを解決するための他の方法を持っています:D – chris

答えて

0

肯定的な先読みアサーションを使用することができます。それは特に効率的ではないと私はタスクの正規表現を使用しません。

/(\b\w++\b)(?=(?>.*?\1(?:.(?!\1))*)$)/gs 

編集:は高速ですが、あまり互換性のあるCasimir et Hippolyteのコメント答えを、逃しました。

関連する問題