带有特殊字符的C#正则表达式边界

时间:2017-10-03 05:44:44

标签: c# regex

我希望找到一个可以找到" Attributable"的正则表达式。 我试过了@"\bAttributable\b",但\ b边界不适用于特殊字符。

例如,它不会区分Attributable和Non-Attributable。有没有办法让Regex用于归属,而不是它的否定?

2 个答案:

答案 0 :(得分:2)

做一个负面的后卫?

(?<!-)\bAttributable\b

显然这仅检查- s。如果要检查其他字符,请将它们放在负面后台中的字符类中:

(?<![-^])\bAttributable\b

或者,如果您只是想与Non-Attributable不匹配但匹配SomethingElse-Attributable,那么请将Non-放在后面:

(?<!Non-)\bAttributable\b

答案 1 :(得分:1)

有几种方法可以解决您遇到的问题,但这完全取决于实际需求。有时需要精确确定每个具体案例中需要的“单词边界”,因为\b word boundary是1)依赖于上下文,2)匹配字符串中您应该注意的特定位置:

  
      
  • 在字符串中的第一个字符之前,如果第一个字符是a   字符。
  •   
  • 字符串中的最后一个字符后,如果是最后一个字符   character是一个单词字符。
  •   
  • 字符串中的两个字符之间,   其中一个是单词字符而另一个不是单词字符。
  •   

现在,您可以遵循以下几种方法: