正则表达式排除2个单词

时间:2016-10-31 16:05:36

标签: java regex string expression

我在JAVA中使用REGEX,我需要检查一个字符串是否有一个WORD,在它之前和之后没有一些特定的单词。

我设法创建了一个正则表达式,排除了后面的单词:

.*WORD(?! AFTER).*

使用这个表达式,字符串“bla bla WORD AFTER bla bla”将不匹配,但字符串“bla bla WORD bla bla”将匹配。

我也需要前一个词的相同行为。例如,String “bla bla bla BEFORE WORD AFTER bla bla bla”不应该匹配,但字符串“bla bla WORD bla bla”应该。

我试过了:

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

虽然表达式没有给出任何错误,但它没有预期的行为。相反,它与第一个表达式完全相同(没有(?!BEFORE))。 任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:3)

尝试此操作(负面观察(请参阅Java API documentation了解课程Pattern):

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