当我们得到word文档的数据的时候,想要在数据库建成相应的表,原始人(曾经的我)选择一条条ctrl C V 复制粘贴,耗时且繁琐,毫无技术性(不高级)。 java情报局研究中心的组长告诉我,使用 idea正则表达式全局替换,yyds! (以上为废话引用
当原始人看到表格数据,头大且头疼:这得复制到ctrl键都出油了
想要把表格数据转换成sql语句,步骤如下
1. 在IDEA中创建文本文件
2. 将表格复制到文本文件中
3. 快捷键 ctrl + R 替换功能
4. 打开正则表达式功能
5. 输入替换前的表达式和替换后的表达式
首先,每行数据加 ().
替换前表达式
^(.+)$
^ 匹配字符串的开始 $ 匹配字符串的结束 . 匹配除换行符\n以外的任意字符
( ) 是为了提取匹配的字符串 + 匹配前面的字符、表达式至少一次
替换后表达式
($1),
$1 代表第一个参数 (), 加在第一个参数上 一行为一个参数
接下来,将每一行的字段加单引号
替换前表达式
([^\s,()]+)
\s 匹配任意的空白符 [ ] 匹配[ ] 内的任意一个字符( []是定义匹配的字符范围)
替换后表达式
'$1',
最后,将生日转换成yyyy-MM-dd
替换前表达式
(\d+)/(\d+)/(\d+)
\d 匹配数字 + 匹配前面的字符、表达式至少一次 () 为了提取匹配字符串的
替换后表达式
$3-$1-$2
替换中$x代表第x个单元,如 $1表示第1个单元;
最后 加上mysql格式
INSERT INTO student(stuId,stuName,sex,birthday,nation,nativePlace,majorId) VALUES
('07042219', '黄耀', '男', '1989-01-02', '汉', '黑龙江省牡丹江市', '0403'),
('06041138', '华美', '女', '1987-11-09', '汉', '河北省保定市', '0403'),
('07045120', '刘权利', '男', '1989-10-20', '回', '湖北省武汉市', '0403'),
('08055117', '王燕', '女', '1990-08-02', '回', '河南省安阳市', '0501'),
('08045142', '郝明星', '女', '1989-11-27', '满', '辽宁省大连市', '0403'),
('08053101', '高猛', '男', '1990-02-03', '汉', '湖北生黄石市', '0501'),
('08053124', '多桑', '男', '1988-10-26', '藏', '西藏', '0501'),
('08053160', '郭政强', '男', '1989-06-10', '土家', '湖南省吉首', '0501'),
('08053116', '陆敏', '女', '1990-03-18', '汉', '广东省东莞', '0501'),
('08053131', '林惠萍', '女', '1989-12-04', '壮', '广西省柳州市', '0501'),
('07093305', '郑家谋', '男', '1988-03-24', '汉', '上海市', '0904'),
('07093342', '罗家艳', '女', '1988-05-16', '满', '北京市', '0904'),
('07093325', '史玉磊', '男', '1988-09-11', '汉', '湖北省孝感市', '0904'),
('07093317', '凌晨', '女', '1988-06-28', '汉', '浙江省温州', '0904'),
('08041136', '徐栋梁', '男', '1989-12-20', '回', '陕西咸阳', '0403'),
('08041127', '巴朗', '男', '1989-09-25', '蒙古', '内蒙古', '0403');
完成!
回顾正则表达式规则
\d 匹配数字 ^ 匹配字符串的开始 $ 匹配字符串的结束 \s 匹配任意的空白符
(\s*)表示连续空格的字符串。
{}一般用来表示匹配的长度 \s{1,3}表示匹配一到三个空格。
(0-9) 匹配 '0-9′ 本身 [0-9]+ 匹配数字 +不可以为空
[0-9]{0,9} 表示长度为 0 到 9 的数字字符串。
正则中(xx)代表此处是一个单元;
替换中$x代表第x个单元,如 $1表示第1个单元;
/l$x:小写第x个单元,如 /l$1表示小写第1个单元的首字母;
\l 第一个字母转小写 \L 从第一个字母到最后转小写
\u 第一个字母转大写 \U 从第一个到最后全部转大写
/u$x:大写第x个单元,如 /u$2表示大写第2个单元的首字母;
如有错误或有更好的办法,欢迎评论!