用于匹配可选标记的正则表达式(sqaure括号)...(在SQL查询中查找和替换,Notepad ++)

时间:2017-02-22 11:26:39

标签: sql regex notepad++ database-schema find-replace

我正在尝试构建一个正则表达式,它将在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 

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

1 个答案:

答案 0 :(得分:1)

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

这些团体是多余的,你的正则表达式变成了:

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