notepad++正则匹配特殊符号需转义元字符,中文标点直接粘贴即可,不可见字符用扩展模式,捕获组需开启正则模式且注意长度限制。

Notepad++ 里正则匹配特殊符号,核心就一条:默认情况下.、*、?、+、[、]、(、)、{、}、|、^、$ 都不是字面意思,必须加反斜杠转义才能当普通字符用。
为什么.、*、?不按字面匹配
Notepad++ 默认启用 PCRE 引擎,这些符号是元字符:. 匹配任意单字符(不含换行),* 和 ? 是量词。想替换成句点、星号、问号本身,就得写成 \.、\*、\?。
- 错误写法:
find what: .*→ 会匹配整行内容,不是“找一个点+一个星号” - 正确写法:
find what: \.\*→ 才能精准匹配字符串.* - 方括号在字符组里也得小心:
[\[\]\(\)]才能同时匹配[、]、(、);左方括号[必须放首位或转义,右方括号]放末位才被识别为字面量
中文标点和 Unicode 字符怎么安全匹配
顿号、、省略号……、破折号——这类中文标点,只要文件编码是 UTF-8(无 BOM),直接复制粘贴进「查找内容」框就能匹配,无需转义。
- 乱码或匹配失败?先看右下角编码状态,如果不是
UTF-8,用「编码 → 转为 UTF-8 无 BOM」重载 - 别用
\u2026这类 Unicode 写法 —— Notepad++ 的 PCRE 不支持\u转义 - 想批量替换中文标点为英文标点,可用字符组:
[,。!?;:“”‘’()【】《》],再对应替换
换行符、制表符、不可见空格怎么定位
这类字符看不见,但正则能抓。关键不是靠猜,而是用对模式和转义:
- 必须勾选「扩展(\n, \r, \t, \0, \x…)」模式(不是「正则表达式」模式)才能直接输入
\r\n、\t;否则 PCRE 下\r、\n不被识别 - 全角空格
、零宽空格不能用\s匹配,\s只认半角空格和\t;稳妥做法是复制该字符到查找框,或切到十六进制模式查200b - 合并所有空白(含换行、制表、空格)为单个空格?用
[ \t\r\n]+替换为一个半角空格
$1 捕获组引用失效的常见原因
写了 (\d+) 却无法用 $1 引用,90% 是因为没开对模式 —— Notepad++ 不报错,只是把括号当普通字符处理。
- 打开替换框(
Ctrl + H)后,立刻盯住窗口右下角,确认显示的是「正则表达式」四个字 - 如果显示「普通」或「扩展」,必须手动单击「正则表达式」单选框(注意:不能和「扩展」同时勾选)
- 切换编码、重载文件、甚至从剪贴板粘贴后,都可能悄悄退回到「普通」模式,每次替换前务必扫一眼
- 捕获组编号从 1 开始,且只支持
$1、$2这种形式,不支持\1或\g{1}
最易忽略的一点:正则长度上限是 69 个字符 —— 写太长的表达式会静默截断,导致逻辑错乱。复杂需求建议拆成多步替换,别硬堆在一个正则里。











