Notepad++使用正则合并多行 格式化specialisms字段内容
Notepad++ 正则实现specialisms字段规整方案
打开Notepad++替换窗口(快捷键Ctrl+H),先勾选正则表达式选项,取消*.匹配换行*选项,按以下3步执行替换即可,稳定性比单步跨段匹配更高:
替换步骤
- 第一步:清理specialisms行自带的冗余符号
- 查找内容:
^specialisms:\s*\[?\s*\.{3}\s*$ - 替换为:
specialisms: - 点击「全部替换」,这一步会移除specialisms行原有的方括号、省略号,保留字段名等待拼接后续枚举值。
- 查找内容:
- 第二步:合并中间带编号的枚举值为逗号分隔格式
- 查找内容:
\R\s*\d+[.)]\s*(?![\s\S]*?phoneNumber:)(?=[\s\S]*?website:) - 替换为:
, - 重复点击「全部替换」,直到提示替换0处为止。这个正则会自动识别specialisms和website之间的编号行,把每行前的数字编号、换行、多余空白替换成逗号加空格,不会误碰其他字段下的编号内容。
- 查找内容:
- 第三步:清理拼接后残留的多余格式
- 查找内容:
,\s*(\R\s*website:) - 替换为:
$1 - 点击「全部替换」,这一步会删掉website行前多余的尾逗号,保证格式规整。
- 查找内容:
效果示例
原始输入格式:
phoneNumber: 13800001111 specialisms: [ ... 1) 心血管内科 2) 普通外科 3) 儿童保健 website: https://test-hospital.com phoneNumber: 13800002222 specialisms: [ ... 1. 眼科 2. 耳鼻喉科 website: https://test2-hospital.com
处理后输出格式:
phoneNumber: 13800001111 specialisms: 心血管内科, 普通外科, 儿童保健 website: https://test-hospital.com phoneNumber: 13800002222 specialisms: 眼科, 耳鼻喉科 website: https://test2-hospital.com
内容的提问来源于stack exchange,提问作者Peter Spiegelenburg
相关产品推荐
相关产品推荐

