匹配可选标签(方括号)的正则表达式...(在 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+)?

https://regex101.com/r/Rz9MLB/7

您必须转义方括号,因为它们在正则表达式中很特殊。

并且组是多余的,您的正则表达式变为:

\[?database\]?\.\[?dbo\]?\.\[?table_name\]?