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;

  • 相关阅读:
    【转】C#中判断扫描枪输入与键盘输入
    根据名称分组,选择最大日期和最小日期的数据,并显示在一行上
    C#如何判断我的程序已经有一个实例正在运行
    消息队列篇
    Redis面试笔记(二)雪崩、穿透、击穿三连问
    MySQL基础
    Redis面试笔记(一)
    Java多线程(二)
    Java多线程(一)
    Elastic Search之布尔查询
  • 原文地址:https://www.cnblogs.com/cdcr/p/9837773.html
Copyright © 2011-2022 走看看