最可靠方法是正则替换:查找^\s*$\r?\n,替换为空,可删除含空格、制表符、bom等所有“伪空行”,兼容windows/unix换行,且需预览高亮确认。

用正则表达式删除空行最可靠
Notepad++ 自带的「删除空行」功能(编辑 → 行操作 → 删除空行)只删纯空行(不含任何字符),但实际中很多“看似空”的行其实含空格、制表符或不可见 BOM 字符,它完全不处理。真正能覆盖所有情况的,是正则替换。
操作步骤:
- 按
Ctrl + H打开替换窗口 - 勾选
正则表达式(确保不是「普通」或「扩展」模式) - 在「查找目标」输入:
^\s*$\r?\n - 「替换为」留空
- 点「全部替换」
^\s*$ 匹配行首到行尾之间只有空白字符(含空格、\t、\r、\n、\f、\v)的整行;\r?\n 确保跨 Windows / Unix 换行兼容。注意不要加 g 或 m 标志——Notepad++ 的正则引擎不认这些。
为什么不能用「扩展模式」删空格行
有人试过用扩展模式(\r\n、\t)手动拼接,比如查 \r\n 或 \r\n,但会漏掉中间有多个空格、混合制表符、或行末带空格的情况。更麻烦的是:扩展模式不支持 \s 和 ^$ 锚点,根本没法做“整行空白”判断。
典型失败场景:
- 一行只有两个空格 + 回车 → 扩展模式下无法一次性匹配
- UTF-8 with BOM 文件里,首行看似空,实为
EF BB BF 0A→ 只有正则配合\s能吞掉 BOM 后的空白 - 剪贴板粘进来带
\r\n\r\n的双空行 → 扩展模式一次只能处理一个换行,易残留
批量处理前务必先备份或撤销检查
正则替换是全局生效的,一旦误操作(比如多输一个 * 导致删掉大段内容),Ctrl + Z 有时无法逐层撤回全部替换动作,尤其文本超大时。
- 建议先用
Ctrl + F输入^\s*$(同样勾选正则),点「全部高亮显示」看哪些行会被删——这是最安全的预览方式 - 如果文件重要,先
Ctrl + A→Ctrl + C复制全文到新标签页备用 - 避免在未保存的远程 FTP 编辑模式下直接替换,网络延迟可能导致「全部替换」卡住并丢失状态
想保留部分空行?得改正则逻辑
默认正则 ^\s*$\r?\n 是无差别清除,但工程中常需「只删连续空行中的多余者」,比如把 \n\n\n 压成 \n\n。这时不能靠一键按钮,得微调:
- 查:
(\r?\n)\s*(\r?\n)→ 替换为:$1$2(合并相邻空行) - 查:
^\s+$(\r?\n)→ 替换为:$1(只删带空白但无文字的行,保留纯空行) - 注意:这类改写必须关掉「匹配大小写」和「全字匹配」,否则
$1捕获会失败
真正难的从来不是“怎么删”,而是“该删哪几行”——业务规则不同,正则就得跟着变,没有万能一锤子方案。











