在notepad++中用正则替换合并多行:先确认换行符类型(crlf或lf),查找框填\r\n或\n,替换为逗号或空格;若无效则切换换行符类型;复杂场景需用正则圈定范围处理。

Notepad++ 里怎么用替换功能把多行变一行
直接用「查找替换」的正则模式,把换行符替换成空格或逗号就行。关键不是“能不能”,而是\r\n和\n得写对,Windows 和 Unix 换行不同,Notepad++ 默认认\r\n(Windows 风格),但粘贴进来的文本可能混着\n。
操作步骤:
- 按
Ctrl+H打开替换面板 - 勾选「正则表达式」(别选「扩展」,它不支持
\r\n) - 「查找目标」填:
\r\n(Windows)或\n(Unix/Linux/Mac 粘贴文本) - 「替换为」填你需要的分隔符,比如
,或(空格) - 点「全部替换」
为什么有时候点了「全部替换」没反应
大概率是换行符类型没匹配上——你文本实际是\n,但你在查找框写了\r\n,或者反过来。Notepad++ 不会自动检测换行风格,也不会提示你当前文档用的是哪种。
快速确认方法:
- 菜单栏点「视图 → 显示符号 → 显示所有字符」,看行尾显示的是
CRLF还是LF - 或者按
Ctrl+Shift+P打开「Python Script」插件(如果装了),运行editor.getEOLMode():返回0是\r\n,1是\n - 更简单:先试
\r\n,没效果就换\n,再不行就查一下有没有\r(老 Mac 风格,极少见)
想保留某些换行、只合并指定段落怎么办
不能靠全局替换,得用正则“圈出范围”再处理。典型场景:合并列表项,但跳过空行或标题行。
例如把这种结构:
水果: - 苹果 - 香蕉 - 橙子 <p>蔬菜:</p>
- 胡萝卜
- 菠菜
变成:
水果:苹果, 香蕉, 橙子 蔬菜:胡萝卜, 菠菜
做法:
- 查找目标:
(- ([^\r\n]+))\r\n(?=- |$) - 替换为:
, $2 - 注意:要分两步——先合并列表项,再删掉开头的
-;一步到位容易漏边界 - 正则里
[^\r\n]+比.*安全,避免跨行误匹配
- 查找目标:
用宏或插件批量处理大量文件时要注意什么
Notepad++ 的宏录制默认不记录「查找替换」里的正则选项,回放时容易失效。而且「全部替换」在多文件中行为不稳定——它只对当前激活标签页生效,不会自动切到下一个文件。
稳妥做法:
- 别依赖宏做跨文件合并,改用「搜索 → 在文件中查找」配合「替换在文件中」(需开启「正则表达式」)
- 路径里有空格或中文?确保「查找目标」和「替换为」内容用英文引号包住,否则命令行调用会崩
- 批量前先备份:菜单「文件 → 另存为」或启用「备份当前文件」选项(设置 → 首选项 → 备份)
最麻烦的其实是混合编码:UTF-8 with BOM 的文件,有时\r\n会被截断识别成乱码。遇到替换后出现或错位,先转成 UTF-8(无 BOM)再试。










