使用正则表达式,组捕获和反向引用查找和替换

时间:2015-07-08 15:06:46

标签: regex replace sql-server-2008-r2 ssms capturing-group

我正在尝试在SQL Server 2008 R2 Management Studio中执行查找和替换操作,并使用组捕获,以便我可以返回引用替换中的组。我从this了解SSMS使用the Visual Studio 2005 regex engine。这是我的一个例子:

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

这是我的“查找”表达式:

SELECT (.+) FROM (.+)

这是我的“替换”表达式:

\1 \2

但是,运行替换操作会导致没有返回捕获的组,即每行只是“”(< ---只是两个反向引用之间的空格)。

我做错了什么?

2 个答案:

答案 0 :(得分:7)

SQL Server Management Studio引擎使用{}来“标记”表达式:

SELECT {.+} FROM {.+}

当您将其与\1 \2替换表达式结合使用时,您将获得预期结果:

First Table1
Second Table2
Third Table3

VS Regex reference page解释了详细信息。

答案 1 :(得分:1)

对于SSMS 2017 {....}和\ 1将不起作用。使用(...)和&1代替。