notepad++正则替换需手动启用“正则表达式”模式(右下角显示),否则静默字面匹配;换行符须用\r\n、\n或\r(v7.9+),禁用$1等引用,仅支持\1-\9捕获组,不报错是最大陷阱。

Notepad++正则替换不是“输完表达式就点全部替换”那么简单——它默认关闭,且不报错;你输\d却没启用模式,它就真的只找字面的\d两个字符。
必须先确认右下角显示“正则表达式”
这是所有失败的起点。Ctrl + H 打开替换框后,右下角状态栏必须明确显示“正则表达式”。若显示“普通”或“扩展”,哪怕你写了^.*$也完全无效,它静默按字面匹配,不提示、不警告、不报错。
- 每次打开替换框都要手动核对,某些操作(如切换标签页、执行宏)可能重置该选项
- 老版本(v7.9 以前)不支持
\R,必须根据换行格式写\r\n或\n;新版虽支持\R,但 UTF-8 with BOM 文件会让它失效 - 中文文件无需额外设置,但确保编码是 UTF-8(菜单栏「编码 → 转为 UTF-8」),否则
\w可能漏掉汉字
换行符怎么写才真正生效
\n在 Notepad++ 正则模式里不是换行符,而是字母 n——这是最常卡住人的点。它只在“扩展模式”下才表示换行,而扩展模式不支持捕获组,基本不能用于结构化替换。
- Windows 文档:查
\r\n,替为空格或留空即可合并行 - Unix/macOS 文档:先启用「视图 → 显示符号 → 显示所有字符」,确认只有¶(LF)无↵(CR),再用
\n - v7.9+ 推荐用
\R,自动适配\r\n/\n/\r,但遇到 BOM 文件请先转为 UTF-8(无 BOM) - 连续空行(
\r\n\r\n)直接替成空格会出多余空格,应先单独处理:\r\n\r\n→\r\n,再替换剩余换行
捕获组引用必须用\1,不能用$1或${name}
Notepad++ 只认 \1、\2…\9 这种反斜杠数字语法。写 $1 或 \g,结果就是字面输出$1,不会被解析为引用。
- 查找:
name=([^,]+),age=([^,]+),替换:"\1","\2",才能提取字段 -
\0表示整个匹配内容,调试时可先设替换为\0确认高亮是否正确 - 嵌套括号按左括号顺序编号:
(a(b)c)中,\1是a(b)c,\2是b - 不支持命名捕获(如
(?<key>\w+)</key>)、\K、Unicode 属性类(如\p{Han}),中文请直接写汉字或用[\u4e00-\u9fa5]
大小写转换和边界控制有硬限制
Notepad++ 的 \U、\L 等大小写控制符可用,但仅作用于紧随其后的下一个字符或捕获组,不能跨多个字符批量转换;\b 也不识别中文边界,一用就失效。
- 下划线转驼峰:
_([a-z])→\U\1,得手写\U,不能指望自动识别单词边界 - 匹配独立中文词“你好”,别写
\b你好\b,直接写你好;要排除前后是中文的情况,用负向断言:(? - 变量名精确匹配:
(?,比 <code>\buser_name\b可靠 -
\10会被解析为\1+ 字符0,最多只支持到\9
真正麻烦的不是语法本身,而是它不报错——模式关了、括号没配对、换行符写错、BOM 干扰,全都不提示,只默默不做任何事。动手前务必先做一次纯查找,看高亮是否符合预期,再动替换。











