我正在尝试构建一个正则表达式,它将在100多个SQL文件中查找和替换某些SQL模式资格的出现。
原始文件可以包含可能(可选)具有方括号(class FileContainer implements Serializable {
BigDecimal clientId
BigDecimal fileContainerId
...
...
static hasMany = [fileObjects: FileObject]
static mapping = {
table 't_container'
id composite : ["clientId", "fileContainerId"]
}
}
class FileObject implements Serializable {
BigDecimal clientId
BigDecimal fileObjectId
BigDecimal fileContainerId
FileContainer fileContainer
...
...
static belongsTo = [FileContainer]
static mapping = {
table 't_file_object'
id composite : ["clientId", "fileObjectId"]
columns {
fileContainer {
column name:'client_id'
column name:'file_container_id'
}
}
fileContainer insertable:false, updateable:false
}
}
和'['
)的架构资格。例如,脚本文件可能包含:
']'
或
[database].[dbo].[table_name]
或
database.[dbo].[table_name]
以及所有可能的组合...
我写了这样的话:
database.dbo.[table_name]
Not really working(regex101)
更新(基于答案的解决方案):
扩展基于@Toto在下面选择的答案,添加了一个可能的表别名,以匹配后面的字符串并提供空格前缀和后缀
([)?database(])?\.([)?dbo(]?)\.([?)table_name(]?)
database.dbo.table_name tn
答案 0 :(得分:1)
你必须转义方括号,因为它们在正则表达式中是特殊的。
这些团体是多余的,你的正则表达式变成了:
\[?database\]?\.\[?dbo\]?\.\[?table_name\]?