我正在尝试使用正则表达式来匹配确切的单词作为关键字替换的一部分。我有以下语句来测试它(这里的单词是" Foo"(区分大小写)):
foo.
foo
foos
foo .
foo.
@{foo}
Foo.
Foo space
Foo
Foo.
Foo .
Foo.
@{Foo}
${Foo}
现在我已经接近了:
\b(?![(\@|\$)\{])Foo\b
和
\ bFoo \ B'/ P>
但我不能否定
@ {Foo}或$ {Foo}如果我尝试使用
[^(\@\{)]\bFoo\b
它只匹配以前不匹配的前导空格。我的正则表达式在这里很弱,我真的很感激一个很好的解决方案,特别是可以解释的方法!
答案 0 :(得分:2)
尝试:
(?<![(@|\$)\{])\bFoo\b
[^(\@\{)]
的问题在于它匹配任何不在该集合中的字符,在那里您要检查字符是否不在该集合中而不实际匹配它。
(?<!yourmatch)
背后是负面的,它检查是否存在模式而不匹配它。