正则表达式匹配 SQL 脚本 SSMS 中的最后一个方括号
Regex match last square brackets in SQL Script SSMS
我正在尝试在 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 To 03 Weeks SUM]
;所以我可以用 '
替换 [|]
我试过了
(?<=\sAS\s).*(\[)Gt|SUM(\])
这给出了:
我要替换的是完整匹配而不是组匹配
然后我尝试了:
(?<=\sAS\s).*?(\[)|(?<=\sAS\s)?(\])
但这匹配太多(即它匹配倒数第二个 ]
。
我尝试了一些其他的东西都无济于事。
行为似乎与在正则表达式 101 上使用 PCRE PHP 匹配。示例:here 所以我添加了那个标签,但我在这个领域没有足够的经验来知道它是否有效。
如何更改此正则表达式以仅匹配最后一个括号?
您可以使用 2 个捕获组并匹配 [
和 ]
以便它们可以替换为 '
(AS )\[([^\]]+)\]
(AS )
捕获 组 1 匹配 AS
\[
匹配 [
(
捕获 第 2 组
[^\]]+
否定字符 class,匹配任何字符 1+ 次,除了 ]
)
关闭群组
\]
匹配 ]
在替换中使用 2 个捕获组
''
我正在尝试在 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 To 03 Weeks SUM]
;所以我可以用 '
[|]
我试过了
(?<=\sAS\s).*(\[)Gt|SUM(\])
这给出了:
我要替换的是完整匹配而不是组匹配
然后我尝试了:
(?<=\sAS\s).*?(\[)|(?<=\sAS\s)?(\])
但这匹配太多(即它匹配倒数第二个 ]
。
我尝试了一些其他的东西都无济于事。
行为似乎与在正则表达式 101 上使用 PCRE PHP 匹配。示例:here 所以我添加了那个标签,但我在这个领域没有足够的经验来知道它是否有效。
如何更改此正则表达式以仅匹配最后一个括号?
您可以使用 2 个捕获组并匹配 [
和 ]
以便它们可以替换为 '
(AS )\[([^\]]+)\]
(AS )
捕获 组 1 匹配AS
\[
匹配[
(
捕获 第 2 组[^\]]+
否定字符 class,匹配任何字符 1+ 次,除了]
)
关闭群组\]
匹配]
在替换中使用 2 个捕获组
''