0

我正在尝试构建一个正则表达式,它将在 100 多个 SQL 文件中查找和替换某些 SQL 模式限定的出现。

原始文件可以包含可以(可选)有方括号('['']')或没有的模式限定。例如,一个脚本文件可能包含:

[database].[dbo].[table_name]

或者

database.[dbo].[table_name]

或者

database.dbo.[table_name]

以及所有可能的组合...

我写了这样的东西:

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

不是真的工作(正则表达式101)

更新(基于答案的解决方案):

基于@Toto 在下面选择的答案进行扩展,添加可能的表别名以匹配以下字符串并提供空格前缀和后缀

database.dbo.table_name  tn 
(\s+)(\[)?database(\])?\.(\[)?dbo(\]?)\.(\[?)table_name(\]?)((\s+)(tn))?(\s+)?

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

4

1 回答 1

1

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

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

\[?database\]?\.\[?dbo\]?\.\[?table_name\]?
于 2017-02-22T11:31:07.193 回答