我正在尝试让正则表达式匹配确切的单词作为关键字替换的一部分。我有以下语句来测试它(这里的单词是“Foo”(区分大小写)):
foo.
foo
foos
foo .
foo.
@{foo}
Foo.
Foo space
Foo
Foo.
Foo .
Foo.
@{Foo}
${Foo}
现在我已经接近:
\b(?![(\@|\$)\{])Foo\b
和
\bFoo\b
但我无法让它否定
@{Foo} 或 ${Foo} 如果我尝试使用
[^(\@\{)]\bFoo\b
它只匹配之前不匹配的前导空格。我的 Regex-Fu 在这里很弱,我真的很欣赏一个好的解决方案,尤其是可以解释如何实现的解决方案!
最佳答案
尝试:
(?<![(@|\$)\{])\bFoo\b
[^(\@\{)]
的麻烦是它匹配不在该集合中的任何字符,因为您想要检查该字符是否不在该集合中而不实际匹配它。
(?<!yourmatch)
是一个否定的外观,它检查模式是否存在而不匹配它。
关于c# - 正则表达式使用 {、}、$ 和 @ 忽略带有特殊字符的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19911981/