正则表达式\ b但不仅仅是c#中的字母数字字符

我想要与\b相同的function,但与其他字符相同。

在C#中,我希望有类似的东西

 string str = "\\b" + Regex.Escape(string) + "\\b"); 

但是我有一些所以Regex.Escape("@(Something")会在字符串Typing @(Something to you找到你的Regex.Escape("@(Something")找到它。

您遇到的问题与\b字边界依赖于上下文的事实有关, \b\(abc\b将匹配(abc in x(abc)但不在:(abc)\b\(表示必须)在( )之前成为一个单词char。

匹配任何未使用单词字符括起来的字符串

 var pattern = $@"(? 

请参阅正则表达式演示 。

在这里, (?是一个负面的lookbehind,它将确保当前位置左侧没有字符char,而(?!\w)负向前瞻将确保没有字符char立即当前位置的权利。

其他自定义“字”边界:

  • 空白字边界: var pattern = $@"(? var pattern = $@"(?
  • 单词和符号边界(如果你不想在c++找到c ): var pattern = $@"(?

为此,你需要在每一端都有一个条件字边界。
它只是保护字符串的开头和结尾,如果它是一个单词,它必须是
一个单词边界。

如果它不是一个单词,默认是没有的,因为它应该是。

  (?(?= \w ) \b ) (?: @\(Something ) (?(?<= \w ) \b ) 

所以,它最终看起来像

 string str = "(?(?=\\w)\\b)" + Regex.Escape(string) + "(?(?<=\\w)\\b)"; 

Regexstorm.net演示

这可以消除猜测。