zoukankan      html  css  js  c++  java
  • 正则分组替换,大小写转换

    正则表达式最大作用就是搜索与替换,

    今天工作中遇到一个棘手的问题,因为需求变动,一张表突然要增加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被正则表达式本身占用)

    下面这个括号组一共分为三组

    (()())

    分组方法:数左括号,从左到右进行分组,有几个左括号就有几组(更复杂的分组情况请查阅相关书籍)

    大小写转换:

    LE:LE元字符会将它们之间的大写字母变为小写,UE元字符会将它们之间的小写字母变为大写,但是这个好像并不是所有的正则实现都支持,笔者使用的工具为notepad++

    首先搜索用正则:

    ^.*`(w*)_(w)(w*)`.*'(.*)'.*$

    反单引号中内容匹配字段名,单引号中内容匹配备注内容,

    `AAA_BBB1` varchar(2) DEFAULT NULL COMMENT 'AAABBB1',

    用以上正则匹配sql建表语句会分为四组(根据以上介绍的分组内容)

    第一组:AAA

    第二组:B

    第三组:BB1

    第四组:AAABBB1

    分组之后替换操作会容易很多,只需要注意分组内容放置的位置以及大小写就可以了

    替换正则:

        /**      * $4      */     @Column(name = "$1_$2$3")     private String L$1E$2L$3E;

    备注内容:   /**      * $4      */

    $4表示将第四组内容放置在此处

    字段名:@Column(name = "$1_$2$3")

    用1,2,3组重组字段名$1_$2$3即为:AAA_BBB1

    属性:private String L$1E$2L$3E;

    L$1E$2L$3E:将第一组小写,第二组不变,第三组小写拼在一起:aaaBbb1;

    为windows系统下换行符

    替换结果如下

        /**
         * AAABBB1
         */
        @Column(name = "AAA_BBB1")
        private String aaaBbb1;

  • 相关阅读:
    ubuntu环境下eclipse的安装以及hadoop插件的配置
    hadoop启动步骤
    Ubuntu下hadoop环境的搭建(伪分布模式)
    volatile关键字作用
    CyclicBarrier&CountDownLatch&Semaphore
    Callable、Future和FutureTask浅析
    Unsafe与CAS
    接口和抽象类的区别
    内部类
    泛型
  • 原文地址:https://www.cnblogs.com/cdcr/p/9837773.html
Copyright © 2011-2022 走看看