regex - 正则表达式匹配 SQL 脚本 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 相匹配。示例:在这里,我添加了该标签,但我在该领域的经验不足,无法知道这是否有效。
请如何更改此正则表达式以仅匹配最后一个括号?
解决方案
您可以使用 2 个捕获组并匹配[
and]
以便它们可以替换为'
(AS )\[([^\]]+)\]
(AS )
捕获第 1 组比赛AS
\[
匹配[
(
捕获组 2[^\]]+
否定字符类,匹配任何字符 1 次以上,除了]
)
关闭组\]
匹配]
在替换中使用 2 个捕获组
$1'$2'
推荐阅读
- microservices - 通过 nats 消息运行分子微服务
- eclipse - 如何更改 Eclipse IDE 的外观?(对白)
- r - 如何在 R 中获取已加载库的安装位置?
- python - 在某些情况下,使用正则表达式将文本文件中的输入读入字典
- c - 为什么这段代码在使用在线编译器和 turbo ide 时显示不同的输出?
- javascript - nodejs - 如何从异步函数中获取返回
- java - 将 Keycloak 与 pgbouncer 一起使用
- python - 如何使用列表的元素作为键并将矩阵中的相应数字作为值来生成字典?
- sql - PL/SQL 游标的问题
- c++ - 类全局随机数生成器