Поиск и замена с помощью регулярного выражения, группового захвата и обратной ссылки


Я пытаюсь выполнить операцию поиска и замены в среде SQL Server 2008 R2 Management Studio и использовать запись группы, чтобы я мог ссылаться на группы в замене. Я понимаю из этого , что SSMS использует механизм регулярных выражений Visual Studio 2005. Вот пример того, что у меня есть:

SELECT First FROM Table1
SELECT Second FROM Table2
SELECT Third FROM Table3

Вот мое выражение "найти":

SELECT (.+) FROM (.+)

Вот мое выражение" заменить":

1 2

Однако выполнение операции замены не приводит к захвату группы возвращаются, то есть каждая строка-это просто "" (

Что я делаю не так?

2 5

2 ответа:

SQL Server Management Studio engine использует выражения { и } для "тегирования" выражений:

SELECT {.+} FROM {.+}

Когда вы объединяете это с выражением замены \1 \2, Вы получаете ожидаемый результат:

First Table1
Second Table2
Third Table3

Справочная страница VS Regex объясняет детали.

Для SSMS 2017 { .... } и \1 не сработает. Использовать ( ... ) и &1 вместо этого.