排除2个单词的正则表达式

问题描述 投票:0回答:1

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

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

.*WORD(?! AFTER).*

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

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

我试过这个:

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

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

java regex string expression
1个回答
3
投票

试试这个(负向回顾(参见Java API文档

Pattern
):

.*(?<!BEFORE )WORD(?! AFTER).*
© www.soinside.com 2019 - 2024. All rights reserved.