正则替换前必须确认选区和换行符类型:先选中目标区域并统一为unix(lf),再用 ? 匹配所有换行,避免漏替;替换内容依语义填空格、逗号等,禁用错误转义,结构化文本需上下文限定匹配。

正则替换前必须确认选区和换行符类型
没选中目标区域就点 Replace All,会把整个文件的换行都干掉;而粘贴自 Excel、微信或 Windows 日志的文本,常混着
和
,只搜
会漏掉一半。务必先做两件事:
- 用鼠标拖选或按
Ctrl+L多次选中目标行,右下角状态栏要显示类似4 lines selected - 执行
File → Line Endings → Unix (LF)统一换行符,避免后续正则漏匹配
查找框填
?
,不是
或
?
是唯一能同时覆盖
(macOS/Linux)和
(Windows)的写法。
会漏掉纯
,
会漏掉
——尤其从网页复制的文本,换行符经常不一致。
打开替换面板(Ctrl+H),点击右上角 .* 启用正则模式,然后在 Find What 中输入:
?
Replace With 填什么,取决于你要的语义
空格、逗号、竖线、甚至空字符串,都直接填进 Replace With 框里。但要注意:
- 填
,(逗号+空格):结果是a, b, c - 填
|:结果是a|b|c - 留空:结果是
abc,无缝拼接,适合拼接 SQLIN列表或路径 - 别填
\n或\r\n——那是转义错误,不会生效
合并 Python/JSON/SQL 时不能无脑替换
?
原始结构有语法含义时,全局删换行会直接破坏代码。例如:
- Python 多行字符串
"""..."""里的换行必须保留,否则字符串截断 - JSON 数组里每行一个对象,
在}和{之间,删了就变成}{,JSON 解析失败 - SQL 的
WHERE col IN (a, b, c),只该替换括号内的换行,不能动外面的
这时得用上下文匹配,比如查
(?=s*")(后面紧跟引号的换行),或
(?=s*[)}]),而不是通配
?
。
真正卡住人的从来不是正则怎么写,而是你没意识到:空行、行尾空格、伪缩进、混合换行符——这些全得在替换前手动清理,Sublime 不会替你猜哪部分该留、哪部分该吞。











