Notepad++正则删空行正确写法是查找^\s*$替换为空,需勾选“正则表达式”模式;该式匹配纯空行及含空格、制表符等的“伪空行”,兼容跨平台,但不匹配全角空格,末尾换行符也不会被删除。

Notepad++ 正则替换空行的正确写法
直接用 ^\s*$ 匹配空行,替换为空即可。这是最稳定、跨平台兼容的方式,能同时匹配纯空行和只含空格/制表符的“伪空行”。
别用 ^$ —— 它只匹配真正什么都没有的行(不含任何空白字符),实际中几乎没用;也别用 \r\n\r\n 这类硬换行组合,Windows/Linux/macOS 换行符不一致,容易漏掉或误删。
操作步骤:
- 按
Ctrl+H打开替换窗口 - 勾选
正则表达式(不是“扩展”也不是“普通”) - 查找目标填:
^\s*$ - 替换为留空
- 点
全部替换
为什么 \s 能匹配制表符和全角空格?
\s 在 Notepad++ 的 PCRE 引擎里默认包含:ASCII 空格、\t、\n、\r、\f、\v,但不包括全角空格(U+3000)。如果你的文本混有中文编辑器产生的全角空格,^\s*$ 会失效。
这时得手动补上:^[ \t\n\r\f\v\u3000]*$(\u3000 是 Unicode 全角空格)。不过绝大多数代码/日志场景不需要加这个,先试 ^\s*$,替换后还有残留空行再检查是否含全角字符。
替换后多出一个空行?这是正常现象
Notepad++ 不会删除文件末尾的换行符(即最后一行的 \n 或 \r\n),所以即使所有中间空行都被清掉了,光标停在最后一行末尾时,看起来仍像“多了一行”。这不是 bug,是文本文件标准行为。
验证方法:按 Ctrl+End 到文件末尾,再按一次方向键 → 如果光标还能右移,说明末尾有空格;如果直接卡住,那只是换行符存在——不用管它。
若真要连末尾换行符都干掉,得用其他工具(如 PowerShell 的 Set-Content -NoNewline),Notepad++ 正则做不到。
批量处理多个文件时的坑
用 搜索 → 在文件中查找 然后点 替换在文件中 时,^\s*$ 依然有效,但要注意:
- 必须提前在“查找模式”下拉框里选
正则表达式,这个选项在“在文件中查找”窗口里是独立的,容易忽略 - 路径过滤器(如
*.log)要写对,否则可能扫到二进制文件,导致界面假死 - 替换前务必点
查找全部预览命中行数,避免误操作影响大量文件
大文件(>10MB)慎用“替换在文件中”,Notepad++ 可能无响应;优先拆成小批次,或改用 sed -i '/^\s*$/d' *.log(Linux/macOS)或 (Get-Content x.log) -notmatch '^\s*$' | Set-Content x.log(PowerShell)。


















