为了复习正则表达式,我阅读了 this tutorial .无论如何,该教程提到 \b
匹配单词边界(在\w 和\W 字符之间)。该教程还提供了一个链接,您可以在其中安装 expresso(有助于创建正则表达式的程序)。
所以我在 expresso 中创建了我的正则表达式,我确实得到了匹配。现在,当我将相同的正则表达式复制到 visual studio 时,我没有得到匹配项。看一看:
为什么我没有匹配到?在即时窗口中,我正在显示变量输出的内容。在 expresso 中,我确实得到了匹配,而在 visual studio 中,我没有。为什么?
最佳答案
C# 语言 和 .NET 正则表达式 都有自己独特的反斜杠转义序列集,但 C# 编译器拦截了 "\b "
在您的字符串中并将其转换为 ASCII 退格字符,以便 RegEx
类永远不会看到它。您需要逐字逐句地制作您的字符串(带有 at 符号的前缀)或对 'b' 进行两次转义,以便将反斜杠传递给 RegEx,如下所示:
@"\bCOMPILATION UNIT";
或者
"\\bCOMPILATION UNIT"
我会说 .NET RegEx 文档没有明确说明这一点。一开始我也花了一段时间才弄明白。
有趣的事实:\r
和 \n
字符(分别为回车符和换行符)和其他一些字符都可以识别 RegEx 和 C# 语言,所以最终结果是一样的,即使编译后的字符串不同。
关于c# - 为什么\b 不匹配使用 .net 正则表达式的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46587620/