正則分組替換,大小寫轉換


正則表達式最大作用就是搜索與替換,

今天工作中遇到一個棘手的問題,因為需求變動,一張表突然要增加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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM