我正在尝试分析一些SQLCMD脚本以进行代码质量测试。我有一个正则表达式没有按预期工作:
^(\s*)USE (\[?)(?<![master|\$])(.)+(\]?)
我正在尝试匹配以下内容:
- 以USE开头的字符串(忽略空格)
- 后跟可选的方括号
- 后跟一个或多个非空白字符。
- 但该文本为“master”(不区分大小写)时除外
- 或者当该文本是
$
符号时除外
USE [master]
- 不匹配
USE [$(CompiledDatabaseName)]
- 不匹配
USE [anything_else.01234]
- 匹配
[
和]
字符。我正在使用Sublime Text 2作为我的RegEx搜索工具,并参考此速查表。
[...]
吗? - Wiktor StribiżewUSE somestring
或USE [somestring]
,不要使用USE [[somestring]]
。 - Adam^(?!\h*USE\h*\[{0,2}[^]\s]*(?:\$|(?i:master)))\h*USE\h*\[{0,2}[^]\s]*]{0,2}
进行匹配。\ h
代表水平空格,但如果需要匹配换行符,请切换到\ s
。 缩短版本:[^\h*USE(?!\h*\[{0,2}[^]\s]*(?:\$|(?i:master)))\h*\[{0,2}[^]\s]*]{0,2}
](https://regex101.com/r/aB1jD4/2) - Wiktor Stribiżew