最近在工作中需要格式化一批数据,用于数据库查询使用,想起来最近看的正则有相似的案例,就尝试自己改一下。
格式化前数据案例
| 12345678 |
| 12345678 |
| 12345678 |
| 12345678 |
| 12345678 |
| 12345678 |
| 12345678 |
| 12345678 |
根据案例数据格式,编写正则匹配,我们需要的是中间的合同号,抽取如下样式:
"12345678", "12345678", "12345678"
方便在sql查询拼接 in
查询
select * from test where f_contract_no in ("12345678", "12345678", "12345678")
最终,正则如下:
^(\|\s)(\d{8})(\s\s\|)$
讲解:
# 以 '| '开头的归为一组,| 需要转义,\s 代表空格,() 代表组
^(\|\s)
# 中间的数字归为一组,\d 代表数字,{8} 代表一共8个数字
(\d{8})
# 以 ' |' 归为一组,$ 代表结尾
(\s\s\|)$
综上就是正则匹配内容,这里我用sublimt替换文本,window 替换快捷键 ctrl H
点击Replace All
即可替换当前文本,这里的$2
代表取第二组,也就是我们上面说的数字,效果如下:
至于如何将换行去掉,就更简单了,只需要find
输入\n
, Replace
输入空格就可以了。