匹配可选标签(方括号)的正则表达式...(在 SQL 查询中查找和替换,Notepad++)
Regular expression to match optional tags (sqaure brackets)... (find & replace in SQL queries, Notepad++)
我正在尝试构建一个正则表达式,用于查找和替换 100 多个 SQL 文件中出现的某些 SQL 模式限定条件。
原始文件可以包含可能(可选)有方括号('['
和']'
)或没有的模式限定。例如脚本文件可能包含:
[database].[dbo].[table_name]
或
database.[dbo].[table_name]
或
database.dbo.[table_name]
以及所有可能的组合...
我写了这样的东西:
([)?database(])?\.([)?dbo(]?)\.([?)table_name(]?)
Not really working (regex101)
更新(基于答案的解决方案):
根据@Toto 在下面选择的答案进行扩展,添加可能的 table 别名以匹配以下字符串并提供 space 前缀和后缀
database.dbo.table_name tn
(\s+)(\[)?database(\])?\.(\[)?dbo(\]?)\.(\[?)table_name(\]?)((\s+)(tn))?(\s+)?
您必须转义方括号,因为它们在正则表达式中很特殊。
并且组是多余的,您的正则表达式变为:
\[?database\]?\.\[?dbo\]?\.\[?table_name\]?
我正在尝试构建一个正则表达式,用于查找和替换 100 多个 SQL 文件中出现的某些 SQL 模式限定条件。
原始文件可以包含可能(可选)有方括号('['
和']'
)或没有的模式限定。例如脚本文件可能包含:
[database].[dbo].[table_name]
或
database.[dbo].[table_name]
或
database.dbo.[table_name]
以及所有可能的组合...
我写了这样的东西:
([)?database(])?\.([)?dbo(]?)\.([?)table_name(]?)
Not really working (regex101)
更新(基于答案的解决方案):
根据@Toto 在下面选择的答案进行扩展,添加可能的 table 别名以匹配以下字符串并提供 space 前缀和后缀
database.dbo.table_name tn
(\s+)(\[)?database(\])?\.(\[)?dbo(\]?)\.(\[?)table_name(\]?)((\s+)(tn))?(\s+)?
您必须转义方括号,因为它们在正则表达式中很特殊。
并且组是多余的,您的正则表达式变为:
\[?database\]?\.\[?dbo\]?\.\[?table_name\]?