2011-08-09 9 views
2

正確な単語のうちの1つだけが見つかった場合、正規表現パターン@"\b(word1|word2)\b"がtrueを返した場合、どちらのパターンも正確な単語が見つかった場合はtrueを返します。正規表現ヘルプが必要

私が見つけた唯一の例は、1単語が見つかるたびに真実に戻りましたが、すべての単語が見つかったときに真に戻したいと思っていました。だから同じ単語の倍数は数えません。すべての単語が少なくとも1つ出現しているかどうかを知る必要があります。

編集:

例:

パターン "速い茶色のキツネは、のろまなイヌに飛びかかった":@"\b(fox|dog)\b" <を----真

パターンを返します。@"\b(fox|elephant)\b" <を - - trueを返します。falseを返すようにします。

追加:私は両方の場合、言葉の量が私のユーザー

+2

を?サンプルの単語リストと、一致させるかどうかを示すサンプル・ストリングを与えると、本当に役に立ちます。 –

+2

正規表現を2つ作成することはどうですか?それは多くを簡素化するでしょう。 – JMichelB

答えて

2

あなたは、この使用して先読み

(?=.*\bWord1\b)(?=.*\bWord2\b).* 

here on Regexr

(?=.*\bWord1\b)が肯定先読みで、それを参照してください達成することができます。文字列の内部にパターンがあるかどうかをチェックします。それは何にもマッチしません!

最後に.*がありますが、両方の先読みが真の場合、つまり両方の単語が文字列内にある場合のみ一致します。

+0

ありがとう。作品。 – Jeroen

0

単純な答えは、最初の単語のための2つの正規表現の式のものを持っていることであり、他に1つに依存するために検索するため、柔軟でなければなりませんtrue(およびそれら)を返すと、結果はtrueになります。

@"\b(word1)\b"

@"\b(word2)\b"あなたはhere

+0

彼はJavaではなくC#を使っています。 – Vache

0

、あなたがしなければならない場合

@"\b(word1\b(.*\b)?word2|word2\b(.*\b)?word1)\b" 

を確認することができますが、2つの正規表現を使用する方が良いでしょう。

0

ステマの答えが最高です。

次は、与えられたチャールズ

の簡易版である:「単語とWORD2とワード3とWORD4 WORD4は良い男だ、彼はWORD1ではないのですか?」

(\ bword4の\ B \ bword2 \ B |。。bword2の\ \ B \ bword4 \ b)にかかわらず、それらの間のワード境界で

しかし、私はFTW Stema言ったように