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

ror*_*.ap 6 regex ssms replace sql-server-2008-r2 capturing-group

我正在尝试在SQL Server 2008 R2 Management Studio中执行查找和替换操作,并使用组捕获,以便我可以返回引用替换中的组.据我所知,从这个是SSMS使用的Visual Studio 2005的正则表达式引擎.这是我的一个例子:

SELECT First FROM Table1
SELECT Second FROM Table2
SELECT Third FROM Table3
Run Code Online (Sandbox Code Playgroud)

这是我的"查找"表达式:

SELECT (.+) FROM (.+)
Run Code Online (Sandbox Code Playgroud)

这是我的"替换"表达式:

\1 \2
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?

vad*_*rak 9

对于 SSMS 17 及更高版本{ ... },将\1无法使用。使用( ... )$1代替。


das*_*ght 7

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

SELECT {.+} FROM {.+}
Run Code Online (Sandbox Code Playgroud)

将此与\1 \2替换表达式结合使用时,可以获得预期结果:

First Table1
Second Table2
Third Table3
Run Code Online (Sandbox Code Playgroud)

VS Regex参考页面解释了详细信息.

  • 出于一些奇怪的原因,在SSMS中他们使用1美元代替\ 1 ...不确定来自哪个正则表达式方言... (2认同)