加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则分组替换,大小写转换

发布时间:2020-12-14 06:14:14 所属栏目:百科 来源:网络整理
导读:正则表达式最大作用就是搜索与替换, 今天工作中遇到一个棘手的问题,因为需求变动,一张表突然要增加22个字段,这意味着页面字段展示,model类都要跟着增加大量的相似代码, `AAA_BBB1` varchar(2) DEFAULT NULL COMMENT ‘AAABBB1‘, `AAA_BBB2` varchar(2

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

今天工作中遇到一个棘手的问题,因为需求变动,一张表突然要增加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

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

替换正则:

??? /**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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读