我正在尝试在SQL Server Management Studio 2017中执行正则表达式匹配,然后对如下所示的SQL脚本的一部分进行替换:
,ISNULL([Gt 01 To 02 Weeks SUM 1],0) AS [Gt 01 To 02 Weeks SUM]
,ISNULL([Gt 02 To 03 Weeks SUM 1],0) AS [Gt 02 To 03 Weeks SUM]
我想匹配最后一个[
和]
,例如使用示例行[
Gt 02至03周总和]
;所以我可以用[|]
'
我尝试过
(?<=\sAS\s).*(\[)Gt|SUM(\])
这给出了:
完全匹配,而不是我希望替换的组匹配
然后我尝试:
(?<=\sAS\s).*?(\[)|(?<=\sAS\s)?(\])
但是此匹配项太多(也就是说,它也与倒数第二个]
匹配。
我尝试了其他一些尝试都无济于事。
[行为似乎与在正则表达式101上使用PCRE PHP匹配。示例:here,所以我添加了该标记,但是我对该域没有足够的经验来知道它是否有效。
我如何更改此正则表达式,使其仅在最后一个括号中匹配?
您可以使用2个捕获组并匹配[
和]
,以便可以将它们替换为'
(AS )\[([^\]]+)\]
(AS )
捕获group 1匹配AS
\[
匹配[
(
捕获第2组[^\]]+
]否定的字符类,匹配除]
以外的任何字符,超过1次)
关闭组\]
匹配]
在替换中,使用2个捕获组
$1'$2'