正则分组替换,大小写转换
正则表达式最大作用就是搜索与替换, 今天工作中遇到一个棘手的问题,因为需求变动,一张表突然要增加22个字段,这意味着页面字段展示,model类都要跟着增加大量的相似代码, `AAA_BBB1` varchar(2) DEFAULT NULL COMMENT ‘AAABBB1‘, `AAA_BBB2` varchar(2) DEFAULT NULL COMMENT ‘AAABBB2‘, 以这两个为例,可以想象当数据量增多时,工作量也会急剧增加,在这里正则表达式可以真正发挥作用,个人感觉正则最大的魅力就在于大批量的搜索与替换, 一两条数据体现不出正则表达式的优势, 以下为笔者参与项目model类中属性的标准定义形式。 ??? /** 如果每个都要复制粘贴是一件十分枯燥,痛苦的事情,而你又找不到合适的代码生成器 这里仅针对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 分组之后替换操作会容易很多,只需要注意分组内容放置的位置以及大小写就可以了 替换正则: ??? /**rn???? * $4rn???? */rn??? @Column(name = "$1_$2$3")rn??? private String L$1E$2L$3E;rn 备注内容:???/**rn???? * $4rn???? */rn $4表示将第四组内容放置在此处 字段名:@Column(name = "$1_$2$3")rn 用1,2,3组重组字段名$1_$2$3即为:AAA_BBB1 属性:private String L$1E$2L$3E;rn L$1E$2L$3E:将第一组小写,第二组不变,第三组小写拼在一起:aaaBbb1; rn为windows系统下换行符 替换结果如下 ??? /**???? * AAABBB1???? */??? @Column(name = "AAA_BBB1")??? private String aaaBbb1; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |