为什么\ b与使用.net正则表达式的单词不匹配

Ton*_*Nam 6 .net c# regex

要查看常规表达,我会阅读本教程.无论如何,该教程提到\b匹配单词边界(\ w和\ W字符之间).该教程还提供了一个链接,您可以在其中安装expresso(在创建正则表达式时有帮助的程序).

所以我在expresso中创建了我的正则表达式,并且我确实得到了一个匹配.现在,当我将相同的正则表达式复制到visual studio时,我没有得到匹配.看一看:


在此输入图像描述


在此输入图像描述

为什么我没有比赛?在即时窗口中,我显示了变量输出的内容.在expresso我得到一个匹配,在视觉工作室,我没有.为什么?

Dai*_*Dai 25

C#语言.NET正则表达式都具有自己独特的一套反斜杠转义序列,但C#编译器拦截"\b"在您的字符串,并将其转换为ASCII退格字符,因此RegEx类永远看不到它.你需要逐字地创建字符串(带有at符号的前缀)或双重转义'b',以便反斜杠传递给RegEx,如下所示:

@"\bCOMPILATION UNIT";
Run Code Online (Sandbox Code Playgroud)

要么

"\\bCOMPILATION UNIT"
Run Code Online (Sandbox Code Playgroud)

我会说.NET RegEx文档没有说明这一点.我花了一段时间才弄清楚这一点.

有趣的事实:在\r\n字符(分别是回车和换行)和一些其他被认可的两种正则表达式和C#语言,所以最终的结果是一样的,即使编译字符串是不同的.