Подтвердить что ты не робот

Почему Visual Studio использует такой странный синтаксис регулярных выражений

Есть ли причина, по которой 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.
----------------------------------------------------------------

См. здесь (Visual Studio, С#) для Дополнительная информация.

Есть ли причина для этого? Это исторический? Есть ли преимущества?

4b9b3361

Ответ 1

Я цитирую Coding Horror:

Однако у вас неприятный удивление, когда вы пытаетесь на самом деле используйте регулярные выражения, чтобы найти все в Visual Studio. По всей видимости среда разработки Visual Studio имеет свои собственные синтаксис регулярных выражений. Зачем? Кто знает. Вероятно, для тайной обратная совместимость, хотя я понятия не имею, почему вы хотите вечно переносить безумие. Очевидно, это делает людей миллиардеров, так кого я должен судить.

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

Ответ 2

Хорошая новость:

Начиная с Visual Studio 2013 поиск использует стандартные регулярные выражения .NET:

Visual Studio использует регулярные выражения .NET Framework для поиска и замены текста. Дополнительные сведения о регулярных выражениях .NET см. В разделе "Регулярные выражения .NET Framework". Перед Visual Studio 2012 Visual Studio использовала специальный синтаксис регулярных выражений в окнах "Найти и заменить". См. "Преобразования регулярных выражений Visual Studio" для объяснения того, как преобразовать некоторые из наиболее часто используемых символов обычного выражения в версии .NET.

Не нужно больше изучать странный аромат регулярных выражений.

Ответ 3

Ну, они попытались сделать это "проще" для использования, похоже, для С++-кодера.

Предположим, что они предоставили новые нестандартные выражения, например

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

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

Я думаю, что причина, по которой он имеет совершенно другой синтаксис, заключается в том, что пользователь регулярных выражений явно видит его нестандартное и не то же самое как нормальное регулярное выражение.

Это хорошо. В целом это хороший двигатель регулярных выражений и простой в использовании.

Ответ 4

Мой лучший и самый честный ответ заключается в том, что они Microsoft, поэтому они могут использовать любой стандарт, который они выбирают. Некоторый программист где-то, вероятно, решил, что вышеупомянутый синтаксис был более понятен для них или проще кодировать, и поэтому он стал каноническим законом.