2016-10-31 4 views
0

私はJAVAでREGEXを使用しています。文字列の前後にいくつかの特定の単語がない単語が1つあるかどうかを確認する必要があります。2ワードを除外するための正規表現

私は正規表現のウィッヒは後に単語を除外作成するために管理:「BLA BLAをこの式で

.*WORD(?! AFTER).* 

、文字列"BLAのBLA AFTERのblaのbla WORD" が一致しませんが、文字列WORD bla bla "が一致します。

前の言葉と同じ動作が必要です。たとえば、文字列"bla bla bla before bla bla bla"は一致しないはずですが、文字列 "bla bla WORD bla bla"は一致する必要があります。

私はこの試みた:式が任意のエラーを与えるものではありませんが、それは予想される動作を持っていない

.*(?!BEFORE)WORD(?! AFTER).* 

を。代わりに、最初の式と全く同じ働きをします((?!BEFORE)なし)。 ご了承ください。

+0

を、それはいけない何かをマッチングされ、一致しませんか?具体的な例を挙げてください –

+0

@MarkAdelsbergerあなたが正しいです。私は質問を編集しました。ありがとう;) –

+0

私はまだ何かが不明です。文字列 "bla BEFORE WORD bla"が一致する必要がありますか? "bla WORD AFTER bla"はどうですか? –

答えて

3

は、この(負の後読み(クラスPattern)のためJava API documentationを参照してみてください。あなたは、あなたがより具体的にする必要があります「働いていない」と言うとき

.*(?<!BEFORE)WORD(?! AFTER).* 
+0

正常に動作します。私は多くのことを試みましたが、否定的な視線を見ませんでした。どうもありがとうございます! –

+0

私は上記のすべての例で崇高なテキストでこれをテストしました。うまくいきました。 – Bob

関連する問題