【发布时间】:2013-11-23 14:05:11
【问题描述】:
我试图让一个正则表达式匹配一个确切的单词作为关键字替换的一部分。我有以下语句来测试它(这里的词是“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 在这里很弱,我真的很感激一个好的解决方案,尤其是一个可以解释如何的解决方案!
【问题讨论】:
-
您正在使用哪种风格(语言)的正则表达式?
-
C# 中的正则表达式语句
-
只是为了理解,你希望它只匹配
Foo,没有空格或特殊字符? -
你为什么要使用字符类和 OR 组合?我对 C# 正则表达式不是很熟悉,但它不应该是
\b(?!(@|\$|\{))Foo\b我认为@也不需要转义。 -
我想我有点误解了你的问题。但是,
@评论仍然有效。另外,我仍然认为您不需要那里的字符类表示法。
标签: c# regex regex-negation