Пълен синтаксис на 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