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

标签 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

但我无法让它否定

@{Foo} 或 ${Foo} 如果我尝试使用

[^(\@\{)]\bFoo\b  

它只匹配之前不匹配的前导空格。我的 Regex-Fu 在这里很弱,我真的很欣赏一个好的解决方案,尤其是可以解释如何实现的解决方案!

最佳答案

尝试:

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

[^(\@\{)] 的麻烦是它匹配不在该集合中的任何字符,因为您想要检查该字符是否不在该集合中而不实际匹配它。

(?<!yourmatch)是一个否定的外观,它检查模式是否存在而不匹配它。

关于c# - 正则表达式使用 {、}、$ 和 @ 忽略带有特殊字符的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19911981/

相关文章:

c# - 如何为具有 3 个字段的 DateTime 创建编辑器模板?

regex - 无法获取第 5 个数字的正则表达式第二行,并且始终位于“序列号”一词之后

css - 匹配不以 selector 开头的 CSS 选择器

c# - 在 Windows Phone 8.1 中的单独文本 block 上检索 PHP 数据

c# - 为什么我不能等待异步方法?

java - Java 中 html 文本代码的正则表达式

JavaScript 正则表达式寻找替代方案

JavaScript 字符串replace()在替换变量时不起作用

java - 使用正则表达式匹配非单词字符但不匹配笑脸

c# - ASP.NET MVC - 默认范围验证错误消息未被覆盖