为什么Visual Studio使用这种奇怪的正则表达式语法

tan*_*ius 29 regex syntax visual-studio-2008

有没有理由为什么Visual Studio使用这种奇怪的语法(例如在搜索/替换对话框中)?

而不是写\s*(\w+) = new Process\(\)我必须写:b*{:a+} = new Process\(\).
我总是在努力学习这种语法 - 特别是因为普通的.NET语法是前者.

这是两种语法之间的不完全比较:

What            Visual  .NET   Comment
                Studio
----------------------------------------------------------------
Tab/Spaces      :b       \s    Either tab or space
Alphanumeric    :a       \w    ([a-zA-Z0-9])
Subexpression   {}       ()
Substitution    \n       $n    Substitutes the substring matched 
                               by a numbered subexpression.
Backreference   \n       \n    Matches the value of a numbered 
                               subexpression.
----------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见此处(Visual Studio,C#).

这有什么理由吗?这是历史性的吗?有什么优势吗?

Ted*_*Ted 24

我引用编码恐怖:

但是,当您尝试使用正则表达式在Visual Studio中查找任何内容时,您会遇到令人不快的意外.显然,Visual Studio IDE有自己的bastardized正则表达式语法.为什么?谁知道.可能出于神秘的向后兼容性原因,虽然我不知道为什么你想要永远发扬疯狂.显然它让人们成为亿万富翁,所以我应该由谁来判断.

http://www.codinghorror.com/blog/2006/07/the-visual-studio-ide-and-regular-expressions.html

  • 感谢链接 - 文章中的第一个截图很棒 - 它显示了当我按下箭头按钮时发生的情况我总是忽略并忽略^^ (3认同)

ste*_*ema 18

好消息:

从Visual Studio 2013开始,搜索使用标准的.NET正则表达式:

Visual Studio使用.NET Framework正则表达式来查找和替换文本.有关.NET正则表达式的更多信息,请参阅.NET Framework正则表达式.在Visual Studio 2012之前,Visual Studio在"查找和替换"窗口中使用自定义正则表达式语法.有关如何将一些常用的自定义正则表达式符号转换为.NET版本的说明,请参阅Visual Studio正则表达式转换.

不再需要学习一种奇怪的正则表达风味.

  • 需要登录的链接让我很伤心=( (3认同)

bob*_*obo 6

好吧,他们试图让C++编码器"更容易"使用它.

考虑一下他们提供了新的非标准表达式,比如

C/C++ Identifier
:i
Matches the expression ([a-zA-Z_$][a-zA-Z0-9_$]*)

Quoted string
:q
Matches the expression (("[^"]*")|('[^']*')).

我认为这是完全不同的语法的原因是为了让正则表达式用户清楚地看到它的不规范和不一样的正常的正则表达式.

这很好.总而言之,它是一款优秀的正则表达式引擎,易于使用.