正则表达式使用{,},$和@忽略带有特殊字符的空格

时间:2013-11-11 17:09:52

标签: c# regex regex-negation

我正在尝试使用正则表达式来匹配确切的单词作为关键字替换的一部分。我有以下语句来测试它(这里的单词是" 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  

它只匹配以前不匹配的前导空格。我的正则表达式在这里很弱,我真的很感激一个很好的解决方案,特别是可以解释的方法!

1 个答案:

答案 0 :(得分:2)

尝试:

(?<![(@|\$)\{])\bFoo\b

[^(\@\{)]的问题在于它匹配任何不在该集合中的字符,在那里您要检查字符是否不在该集合中而不实际匹配它。

(?<!yourmatch)背后是负面的,它检查是否存在模式而不匹配它。