Есть ли полное описание синтаксиса регулярных выражений, используемого в Sql Server Management Studio? Например, должен быть способ сделать отрицательный просмотр вперед, но в диалоговом окне поиска/замены его нет.
Полный синтаксис Regex для Sql Server Management Studio
Ответы (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.
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++ и т. д.), и вы будете лучше обслуживаться.