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

标签 c# .net regex

为了复习正则表达式,我阅读了 this tutorial .无论如何,该教程提到 \b 匹配单词边界(在\w 和\W 字符之间)。该教程还提供了一个链接,您可以在其中安装 expresso(有助于创建正则表达式的程序)。

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


enter image description here


enter image description here

为什么我没有匹配到?在即时窗口中,我正在显示变量输出的内容。在 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/

相关文章:

c# - entlib 6 记录器实例化错误

c# - 为远程 Sharepoint 2010 创建 EventReceiver

c# - 使用 asp.net c# 读取上传的 .csv 文件

c# - 在服务器上搜索文件名

java - 如何在特定字符串之后获得更多组匹配?

c# - FirstOrDefault/First 和 OrderByDescending 是否比 LastOrDefault/Last 和 OrderBy 更快?

.net - .Net windows 程序员有什么理由需要学习 C 或 C++ 了吗?

c# - 使用 Microsoft.DirectX.AudioVideoPlayback 播放视频时出错;汇编版本错误

javascript - 通过 JavaScript 或 JQuery 获取 DESC 或 ASC 之前的子字符串

java - String replaceAll(,) 方法 Java 的不区分大小写的变量