gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:12 24 4
gpt4 key购买 nike

为了复习正则表达式,我阅读了 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com