Notepad++正则替换需牢记:^匹配行首、$匹配行尾前位置,跨行用\R而非.\*,特殊字符须转义;提取行用标记→书签→复制;行首/尾添加内容优先用^/$正则;去重需先排序再正则;显示所有字符是排查问题关键。

Ctrl+H 里正则替换的几个关键符号必须记牢
Notepad++批量处理字符串,核心就落在 Ctrl+H 的正则替换上。很多人输完正则没反应,不是写错了,而是忽略了几个基础但致命的符号行为:
-
^匹配行首——但只在“每行开头”生效,不是整个文档开头;如果文件第一行前面有空行,^不会匹配那个空行之后的位置 -
$匹配行尾——它不匹配换行符本身,而是换行符之前的位置;所以,$能匹配行尾逗号,但,$\n在 Notepad++ 里不会生效(\n不是正则元字符,得用\r\n或\R) -
.默认不匹配换行符——想跨行匹配,得用\R(Notepad++ 支持的通用换行符写法),而不是[\s\S]或.*?配合单行模式(Notepad++ 没单行模式开关) - 特殊字符如
( ) [ ] { } . * + ? ^ $ \ |全部要加反斜杠转义,比如想替换所有小括号,查找内容得写成\(和\)
提取某类行:标记 → 书签 → 复制,三步不能少
想从几千行日志里只留下含 ERROR 的行?别用“查找全部”然后手动复制——那不是批量,是自虐。真正可复现的流程只有这三步:
- 按
Ctrl+F,切到【标记】页,输入ERROR(或正则如"status":\s*"error"),勾选【标记所在行】,点【全部标记】——左侧出现蓝色圆点才算成功 - 菜单栏点
搜索 → 书签 → 复制书签行(注意:不是“复制已标记”,也不是右键菜单里的“复制”,那些选项在某些插件下会失效) -
Ctrl+N新建空白文档,Ctrl+V粘贴——所有被标记的完整行就进来了 - 如果只想提取某段内容(比如 JSON 中的
"id":123的数字部分),先用正则替换把整行裁成目标格式,例如查找"id":(\d+),替换为$1,再执行上面三步
行首/行尾批量加内容:列编辑 vs 正则,场景决定选谁
给每行开头加 // 注释,或者结尾补个分号,有两种主流做法,选错效率差一倍:
- **列编辑(Alt+鼠标拖选)**:适合文本本身对齐、结构规整的情况,比如代码块缩进一致、CSV 字段垂直排列。缺点是稍有错位就全乱,且无法处理空行或不规则换行
- **正则替换(
Ctrl+H)**:更鲁棒。行首加内容用查找^,替换为//;行尾加分号用查找$,替换为;。空行也会被处理,且支持条件限制,比如只给非空行加:^(.+)$替换为// $1 - 混合使用更高效:先用正则删掉所有空行(查找
^\s*$\R?,替换为空),再用列编辑处理剩余整齐行,比硬刚正则快
去重、拼行、删换行:三个高频操作的坑在哪
这些看似简单的操作,实际最容易翻车:
-
去重:Notepad++ 没内置“删除重复行”功能。靠谱做法是先排序(
编辑 → 行操作 → 排序行(升序)),再用正则^(.*)(\R\1)+$替换为$1——注意这个正则依赖排序,且\R必须写对,\n或\r\n单独写都可能漏匹配 -
多行拼成一行:查找
\R,替换为空(或空格)。但要注意:如果原文件是 Windows 换行(\r\n),\R能覆盖;如果是混着\n和\r的脏数据,得分别替换两次 -
删换行但保留空格:比如把
hello\nworld变成hello world,不能直接替\R为空格,否则连续换行会变成多个空格。稳妥做法是先替\R为单个空格,再用正则{2,}替换为单个空格
实际批量处理时,最常被跳过的其实是「显示所有字符」(视图 → 显示符号 → 显示所有字符)。看不见空格和制表符,就永远不知道为什么正则明明写对了却没效果——这点比任何技巧都关键。


















