Notepad++正则替换连续空格为单个空格需用“ +”(空格+加号)匹配并替换为单个空格;删行首尾空格须分两步:先“ +$”删行尾,再“^ +”删行首;删空行必须匹配“^\s*$\r?\n”并替换为空。

Notepad++ 正则替换连续空格为单个空格
默认情况下,Notepad++ 的「查找」对话框启用「正则表达式」模式后,\s 会匹配所有空白字符(包括制表符、换行符),而不仅仅是空格。如果你只想处理纯空格,必须用字面量 (一个空格)或 [ ](方括号内一个空格)——但更稳妥的是用 +(空格加加号)来匹配「一个及以上连续空格」。
操作步骤:
- 打开「查找」→「替换」(
Ctrl+H) - 勾选「正则表达式」
- 「查找目标」填:
+(注意开头是空格,后面是英文加号) - 「替换为」填:
(仅一个空格) - 点击「全部替换」
⚠️ 注意:别误用 \s+,它会把 Tab、换行也压缩成空格,破坏缩进或格式结构。
Notepad++ 删除行首/行尾多余空格
清理前后空格是常见需求,但 Notepad++ 不支持单次正则同时处理两端,需分两步做,否则容易漏掉某侧。
推荐顺序和写法:
- 先删行尾空格:「查找目标」填
+$(空格+美元符),「替换为」留空 - 再删行首空格:「查找目标」填
^ +(脱字符+空格+加号),「替换为」留空 - 务必关闭「匹配大小写」和「全字匹配」,避免干扰
? 行首的 ^ 和行尾的 $ 是锚点,只在「正则表达式」模式下生效;如果用了 \r\n 换行符,$ 仍能正确识别行尾,无需额外处理。
Notepad++ 替换多个空格但保留缩进(如代码对齐)
直接全局替换 + 会把代码里的缩进也干掉,导致语法错乱。这时候得区分「非缩进位置的空格」——但 Notepad++ 原生正则不支持负向先行断言((? 不可用),所以只能靠「人工界定范围」或「分场景处理」。
实用策略:
- 用「查找」面板先定位目标段落(比如选中一段纯文本,再按
Ctrl+H,替换范围自动限定在选区) - 对代码文件,优先用「语言模式 → Text」临时切换,避免误伤关键字间的空格
- 若必须保缩进,可先用
^ {4}(匹配行首4空格)等固定宽度做标记,再手动审查替换
Notepad++ 的正则引擎是基于 PCRE 的简化版,不支持 \K 或条件匹配,想全自动区分缩进和冗余空格,基本做不到。
为什么「.*」替换后多出空行?
典型错误是用 ^ +$ 匹配「整行只有空格」然后替换成空,结果发现空行变多了。这是因为 $ 匹配的是行尾位置,不是换行符本身;替换为空后,原换行符仍存在,看起来像多了一空行。
真正删空行的写法是:
- 「查找目标」:
^[ \t]*$\r?\n(兼容 Windows / Unix 换行) - 「替换为」:留空
- 或者更简单:用
^\s*$\r?\n,但需确认文档里没混用不可见字符
关键点在于把 \r?\n 显式包含在匹配中,这样替换时才真正删掉整行(含换行符)。漏掉它,就只是清空了内容,换行符还在。


















