Regex匹配SQL脚本SSMS中的最后一个方括号

问题描述 投票:0回答:1

我正在尝试在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(\])

这给出了:

enter image description here

完全匹配,而不是我希望替换的组匹配

然后我尝试:

(?<=\sAS\s).*?(\[)|(?<=\sAS\s)?(\])

但是此匹配项太多(也就是说,它也与倒数第二个]匹配。

enter image description here

我尝试了其他一些尝试都无济于事。

[行为似乎与在正则表达式101上使用PCRE PHP匹配。示例:here,所以我添加了该标记,但是我对该域没有足够的经验来知道它是否有效。

我如何更改此正则表达式,使其仅在最后一个括号中匹配?

regex ssms pcre
1个回答
1
投票

您可以使用2个捕获组并匹配[],以便可以将它们替换为'

(AS )\[([^\]]+)\]
  • (AS )捕获group 1匹配AS
  • [\[匹配[
  • (捕获第2组
    • [[^\]]+]否定的字符类,匹配除]以外的任何字符,超过1次
  • [)关闭组
  • [\]匹配]
  • Regex demo

在替换中,使用2个捕获组

$1'$2'
© www.soinside.com 2019 - 2024. All rights reserved.