实践总结:使用正式表达式快速生成代码

  1. 云栖社区>
  2. 博客>
  3. 正文

实践总结:使用正式表达式快速生成代码

填坑大人 2018-08-23 15:15:33 浏览603
展开阅读全文

概述

在写代码或者写文档的时候,经常需要将数据库表字段格式化,或者转换为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

网友评论

登录后评论
0/500
评论
填坑大人
+ 关注