必须取消勾选“匹配大小写”,否则^\s+因锚点识别失效而无法删除行首空白;实际操作需确保仅勾选“正则表达式”,用^\s+可安全清除行首空格、制表符及bom后不可见符。

用 ^\s+ 去行首空格,但必须关掉「匹配大小写」
行首缩进被误删或完全没反应,八成是勾选了「匹配大小写」——这个选项在正则模式下会干扰 ^ 锚点识别,导致 ^\s+ 匹配失败。它本该只管开头的空白,结果因为大小写开关开着,Notepad++ 会试图把 ^ 当作普通字符处理。
实际操作要点:
- 按
Ctrl + H,确保「正则表达式」被勾选,其他两个复选框(「匹配大小写」和「全字匹配」)必须取消勾选 -
^\s+能同时吃掉行首空格、\t、甚至 BOM 后的不可见空白;如果只想删空格不碰 Tab,换成^ +(注意空格在 ^ 后面) - 批量处理多个文件前,先用
Ctrl + F输入^\s+点「全部高亮」,看哪些行真被识别了——有些文件里第一行看着空,其实是 UTF-8 with BOM,只有\s能吞掉
用 [\t ]+$ 删行尾空格,别碰 \s+$
\s+$ 看着省事,但会连 \r\n 或 \n 一起吃掉,整段文本直接塌成一行。真正安全的是限定范围:[\t ]+ 只认空格和制表符,$ 锚定在换行符之前,换行符原封不动。
容易踩的坑:
- 混合换行符(CRLF + LF)环境下,
[\t ]+$依然可靠;但如果你用了\s+$,在 Windows 文件里可能把\r当作空白删掉,导致换行错乱 - 替换前务必统一格式:菜单 → 编辑 → 行尾符 → 转换为 Windows 格式(或对应目标环境),否则
$在某些行尾识别不准 - 想只处理 .js 文件里的注释行尾空格?不能靠菜单「修剪尾部空格」,它不支持条件过滤;得用「在文件中查找」→ 勾选正则 + 文件过滤器
*.js,查找目标填//.*[\t ]+$
用 \s+ 合并杂乱空格并压成单空格
原始文本里单词间有多个空格、Tab、甚至换行符隔开?\s+ 是最简方案:它匹配所有空白字符(含 \n、\t、 ),替换成单个空格后,再补一次 ^\s+|\s+$ 去首尾,就干净了。
注意边界情况:
-
\s+替换为(一个空格)后,可能出现 “word1 word2” 中间多出两个空格——这是因为原文本是word1\n\t word2,两次\s+替换才彻底收敛,建议执行两遍 - 如果目标是「完全扁平化成一行」,直接上
\s+→,再手动删首尾空格;别用Ctrl + J,它不处理行内残留空格,容易留双空格 - 对中文混排文本要小心:
\s+不影响汉字,但若中间夹了全角空格(\u3000),得额外加一条\u3000→
删空行用 ^\s*$\r?\n,预览比替换更重要
自带的「删除空行」功能只认纯空行,而真实文件里满是带空格、Tab、BOM、甚至零宽字符的“伪空行”。^\s*$\r?\n 是唯一能通杀的写法:它把整行判定为空白,\r?\n 兼容所有换行风格。
但这条正则杀伤力大,操作前必须卡住三道防线:
- 先在查找窗口(
Ctrl + F)输入^\s*$,勾选正则,点「全部高亮」——看有多少行被标黄,心里有数再动手 - 重要文件一定先
Ctrl + A→Ctrl + C备份到新标签页;Notepad++ 的Ctrl + Z对「全部替换」有时只撤回最后一次动作,不是逐行还原 - 如果只想压缩连续空行(比如把 5 个空行压成 1 个),别用
^\s*$\r?\n,改用(\r?\n)\s*(\r?\n)→$1$1,但要注意捕获组编号和括号转义是否生效
真正难的不是写出正则,而是判断哪一段空白该留、哪一段该杀——比如日志里时间戳后的空格、JSON key 后的冒号空格、HTML 标签间的换行,都得单独建规则。一个 ^\s*$\r?\n 按下去很爽,但下次打开文件发现格式全乱了,就得翻备份。











