记录一次正则匹配提取字符串

最近在工作中需要格式化一批数据,用于数据库查询使用,想起来最近看的正则有相似的案例,就尝试自己改一下。

格式化前数据案例

| 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

image.png

点击Replace All 即可替换当前文本,这里的$2代表取第二组,也就是我们上面说的数字,效果如下:

image.png

至于如何将换行去掉,就更简单了,只需要find输入\nReplace输入空格就可以了。

你可能感兴趣的:(记录一次正则匹配提取字符串)