我在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))。 任何想法都将不胜感激。
答案 0 :(得分:3)
尝试此操作(负面观察(请参阅Java API documentation了解课程Pattern
):
.*(?<!BEFORE )WORD(?! AFTER).*