Полный синтаксис Regex для Sql Server Management Studio

Есть ли полное описание синтаксиса регулярных выражений, используемого в Sql Server Management Studio? Например, должен быть способ сделать отрицательный просмотр вперед, но в диалоговом окне поиска/замены его нет.


person agent-j    schedule 24.06.2011    source источник


Ответы (2)


Версии SSMS 2005–2012 на самом деле представляют собой просто модифицированные/настроенные среды Visual Studio Shell (2005–2010), поэтому применяется эта ссылка на регулярное выражение Visual Studio (2005–2010):

http://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.80).aspx

Visual Studio 2012 и более поздние версии перешли на стандартные регулярные выражения .Net.

Однако SSMS не последовала этому примеру и не адаптировала стандартные регулярные выражения до SSMS 2016.

person Tao    schedule 25.06.2011
comment
Я знаю, что это старый пост, но этот ответ неверен для Visual Studio 2012 и новее. Регулярные выражения в SSMS больше не такие, как в Visual Studio. (Visual Studio отказалась от своего причудливого диалекта для гораздо более стандартной реализации. SSMS этого не сделала.) Я опубликовал ответ, относящийся к последним версиям SSMS. - person SvdSinner; 05.09.2014
comment
Спасибо @SvdSinner, обновил ответ, чтобы более точно отразить текущую эволюцию оболочек VS. Если вы знаете, что происходит с SSMS 2014, пожалуйста, отредактируйте ответ или оставьте другой комментарий, чтобы я мог исправить! - person Tao; 05.09.2014
comment
SSMS 2014 по-прежнему использует старую причудливую реализацию. Нет идей для SSMS 2016. - person wqw; 18.05.2015

SSMS использует причудливую реализацию RegEx, которая сильно отличается от того, что используется в Visual Studio и в классе .NET Regex.

Полный список его возможностей и соответствующий синтаксис можно найти здесь в MSDN.

Даже с документацией к его причудливому диалекту регулярных выражений вы можете обнаружить, что его набор функций совершенно отсутствует. (Примеры: он не поддерживает основы, такие как оператор ?, или полезные расширенные функции, такие как положительный осмотр.) Вы можете выполнять отрицательный осмотр с помощью этого синтаксиса:

Prevent match    ~(X)    Prevents a match when X appears at this point in the
                         expression. For example, real~(ity) matches the "real" 
                         in "realty" and "really," but not the "real" in "reality."

Единственное преимущество причудливого диалекта SSMS, которое я заметил, заключается в том, что он содержит множество встроенных классов символов, которых нет во многих других движках.
Примеры:

Math symbol       :Sm   Matches +, =, ~, |, <, and >.
Currency symbol   :Sc   Matches $ and other currency symbols.

ПРИМЕЧАНИЕ ДЛЯ ТЕХ, КТО УЖЕ ИСПОЛЬЗУЕТ РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ В ДРУГОМ МЕСТЕ:

На самом деле, если вы не собираетесь МНОГО использовать содержащиеся в нем настраиваемые группы, вероятно, не стоит тратить время на изучение этого причудливого диалекта Regex. Скопируйте свой запрос в редактор с более стандартной реализацией (visual studio 2012 или более поздней версии, notepad++ и т. д.), и вы будете лучше обслуживаться.

person SvdSinner    schedule 04.09.2014