正則表達式最大作用就是搜索與替換,
今天工作中遇到一個棘手的問題,因為需求變動,一張表突然要增加22個字段,這意味着頁面字段展示,model類都要跟着增加大量的相似代碼,
`AAA_BBB1` varchar(2) DEFAULT NULL COMMENT 'AAABBB1',
`AAA_BBB2` varchar(2) DEFAULT NULL COMMENT 'AAABBB2',
以這兩個為例,可以想象當數據量增多時,工作量也會急劇增加,在這里正則表達式可以真正發揮作用,個人感覺正則最大的魅力就在於大批量的搜索與替換,
一兩條數據體現不出正則表達式的優勢,
以下為筆者參與項目model類中屬性的標准定義形式。
/**
* AAABBB1
*/
@Column(name = "AAA_BBB1")
private String aaaBbb1;
/**
* AAABBB2
*/
@Column(name = "AAA_BBB2")
private String aaaBbb2;
如果每個都要復制粘貼是一件十分枯燥,痛苦的事情,而你又找不到合適的代碼生成器
這里僅針對String類型數據闡述清楚知識點,多類型替換,暫時還沒有發現好的方法,(建議建表時相同類型字段盡量放在一起)
這里需要做的是將sql建表語句中的字段名放到model屬性中的name = ""中,將sql建表語句中的注釋放到model屬性注釋中,然后字段名以駝峰式給在String 之后。
主要用到分組與大小寫轉換
分組:
正則表達式中分組從1開始(分組0被正則表達式本身占用)
下面這個括號組一共分為三組
(()())
分組方法:數左括號,從左到右進行分組,有幾個左括號就有幾組(更復雜的分組情況請查閱相關書籍)
大小寫轉換:
\L\E:\L\E元字符會將它們之間的大寫字母變為小寫,\U\E元字符會將它們之間的小寫字母變為大寫,但是這個好像並不是所有的正則實現都支持,筆者使用的工具為notepad++
首先搜索用正則:
^.*`(\w*)_(\w)(\w*)`.*'(.*)'.*$
反單引號中內容匹配字段名,單引號中內容匹配備注內容,
`AAA_BBB1` varchar(2) DEFAULT NULL COMMENT 'AAABBB1',
用以上正則匹配sql建表語句會分為四組(根據以上介紹的分組內容)
第一組:AAA
第二組:B
第三組:BB1
第四組:AAABBB1
分組之后替換操作會容易很多,只需要注意分組內容放置的位置以及大小寫就可以了
替換正則:
/**\r\n * $4\r\n */\r\n @Column\(name \= "$1_$2$3"\)\r\n private String \L$1\E$2\L$3\E;\r\n
備注內容: /**\r\n * $4\r\n */\r\n
$4表示將第四組內容放置在此處
字段名:@Column\(name \= "$1_$2$3"\)\r\n
用1,2,3組重組字段名$1_$2$3即為:AAA_BBB1
屬性:private String \L$1\E$2\L$3\E;\r\n
\L$1\E$2\L$3\E:將第一組小寫,第二組不變,第三組小寫拼在一起:aaaBbb1;
\r\n為windows系統下換行符
替換結果如下
/**
* AAABBB1
*/
@Column(name = "AAA_BBB1")
private String aaaBbb1;
