实践总结:使用正式表达式快速生成代码
概述
在写代码或者写文档的时候,经常需要将数据库表字段格式化,或者转换为java规范的变量,在实践中总结出来,使用工具+正式表达式,可以简化很多的Ctrl+C/Ctrl+V或修改大小写等繁琐事业,并且能减少误操作。在有规律的,大批量数据的时候,这种处理办法尤其快。以下演示在notepad++中使用正则表达式替换字符大小写。
例1. 将建表字段,做成SELECT字段并包含注释
(1) 原始数据
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录ID',
`ORG_ID` int(11) DEFAULT NULL,
`PRODUCT_CATEGORY_ID` varchar(50) DEFAULT NULL COMMENT '产品分类ID',
(2) 要求处理结果
SELECT
`id` AS `id` -- 记录id
, `org_id` AS `org_id` -- 组织id
, `product_category_id` AS `product_category_id` -- 产品分类id
FROM table
(3) 处理过程
- 步骤1. 正式表达式为:
^([^ ]+).+'(.+)'.+替换为, \L$1 \UAS \L$1 -- $2。主要是将开头非空格的全部字符提取作为变量1,将后面一对单引号所引的内容提取为变量2,组成字段表 - 步骤2. 在前面加上SELECT,在后面加上FROM table,就成为一条完整的SQL,对于字段很多的表,处理优势很明显
(4) 示例图
例2. 将EXCEL表中字段及注释,做成SELECT字段并包含注释
(1) 原始数据
id 主键
org_id 组织编码
product_category_id 产品分类ID
其中数据是由EXCEL表格copy出来的,字段和注释间是TAB符号
(2) 要求处理结果
SELECT
id AS id -- 主键
, org_id AS org_id -- 组织编码
, product_category_id AS product_category_id -- 产品分类id
FROM table
(3) 处理过程
- 步骤1. 正式表达式:
(.+)\t(.+)替换为, \L$1 \UAS \L$1 -- $2。主要是将TAB字符(t)前后分别提示为变量1和变量2,然后组成结果字符串 - 步骤2. 在前面加上SELECT,在后面加上FROM table,就成为一条完整的SQL,对于字段很多的表,处理优势很明显
例3. 将以下数据表字段转为java替换的变量名:
(1) 原始数据。其中字段和注释间是TAB符号
id 主键
org_id 组织编码
product_category_id 产品分类ID
(2) 要求处理结果
/**
* 主键
*/
private String id;
/**
* 组织编码
*/
private String orgId;
/**
* 产品分类ID
*/
private String productCategoryId;
处理后,直接变成了java实体类的属性,如果类型不一样,再修改一下类型就行。再配合eclipse生成getter和setter方法,一个完整的实体类就出来了。不需要安装插件,快速简单方便。
(3) 处理过程
- 步骤1.
_([a-z]{1})替换为\u$1,即下划线后的第1个字段全部改为大写; - 步骤2.
(.+)\t(.+)替换为/\*\*\r\n \* $2\r\n \*/\r\nprivate String $1;
例4. 数据库字段表做成文档
(1) 原始数据
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录ID',
`ORG_ID` int(11) DEFAULT NULL,
`PRODUCT_CATEGORY_ID` varchar(50) DEFAULT NULL COMMENT '产品分类ID',
(2) 要求处理结果
- id : 记录id
- orgId :
- productCategoryId : 产品分类id
(3) 处理过程
- 步骤1. 取出字段名和注释,用tab键隔开,且字段名转为小写。查的目标:
`([\w\d]+)`[^'\r\n]+('([\w\d]+)')?.+替换为:\L$1\t$3 - 步骤2. 下划线后的字段转为大写。查的目标:
_([a-z]{1})替换为:\U$1 - 步骤3. 格式化数据。查的目标:
(.+)\t(.*)替换为:- $1 : $2
总结
使用工具+正式表达式,可以处理很多东西,比如来源文档、excel、网页、日志的各种内容,只要善于总结和使用,都可以大大减轻工作量。
即使撸代码,要也善于总结规律,提升处理技巧。经常看到一些人,一些同事日复一日的重复枯燥无味的事情,烦躁而又无奈,故分享一些撸码的技巧,希望有所帮助。
附加
另附在网上找到的ElLuU等参数的说明:
E
Terminate L or U conversion
l
Convert next character to lowercase
L
Convert all characters up to E to lowercase
u
Convert next character to uppercase
U
Convert all characters up to E to uppercase
