必须确认右下角显示“正则表达式”才生效,否则\d等会按字面匹配;老版本易卡死或丢内容,操作前需备份;\r不生效常因utf-8 with bom或旧版notepad++。

右下角没显示“正则表达式”就别动手
Notepad++ 的正则替换不会报错,但会静默退化成普通字符串匹配。比如你输 \d 却没切换模式,它就真去找反斜杠加字母 d 这两个字符——当然找不到任何数字。
必须手动确认:Ctrl + H 打开替换框 → 看右下角状态栏 → 显示“正则表达式”才算生效。老版本(\R,新版本也得留意 UTF-8 with BOM 文件可能让 \R 失效。
- 临时解决 BOM 问题:编码 → 转为 UTF-8(无 BOM)
- 验证换行类型:视图 → 显示符号 → 看是否出现 ↵¶(Windows)或单独 ¶(Unix)
- 别信教程里写的
\n表示换行——在正则模式下,它就是字面量 n
换行符替换必须分清文档真实格式
Windows 文档用 \r\n,Unix/macOS 用 \n,跨平台安全写法是 \R(仅 Notepad++ 7.9+ 完全支持)。但直接全局替 \r\n 为空格,遇到空行(即 \r\n\r\n)会变成两个空格连在一起。
- 先处理空行:查找
\r\n\r\n→ 替换为\r\n - 再合并普通行:查找
\r\n→ 替换为(一个空格)或留空 - 若要按逗号拆行:查找
,→ 替换为\r\n,注意不是\n - 含引号内逗号(如
"a,b",c)的 CSV 不适用此法——正则无法解析嵌套结构
捕获组 + 反向引用才是重命名/格式转换的核心
想把 user_name 改成 userName,关键不是删下划线,而是定位下划线后首字母并大写。靠 \U\1 控制大小写,而不是手动敲大写字母。
- 查找:
_([a-z])→ 替换为:\U\1(\U表示后续字符转大写) - 匹配行首:用
^,不是\A;匹配行尾:用$,不是\z - 提取邮箱:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,},注意结尾{2,}防止误匹配@a.b - 非捕获组
(?:...)适合组织逻辑但不占\1编号,避免反向引用错位
替换后没变化?先关“显示所有字符”再检查三件事
视觉延迟、插件冲突、编码错配都可能导致替换“看起来无效”。最常被忽略的是:启用了“显示所有字符”后,CR/LF 符号遮挡了真实换行形态,导致你误判文档格式。
- 关闭“视图 → 显示符号 → 显示所有字符”,再看右下角换行标识
- 替换后光标跳到开头?按 Ctrl+End 看末尾是否已更新,别只盯编辑区顶部
- 大文件(>10MB)上正则替换偶尔卡死或丢内容,操作前务必手动备份
- 如果用了
\R却不生效,优先怀疑是 UTF-8 with BOM 或老版本 Notepad++
换行符和捕获组看着简单,实则每一步都卡在编辑器模式、文档编码、PCRE 版本三者的咬合点上。少对准一个,整条正则就失效。











