Notepad++正则替换中.、*、?是元字符而非字面符,需用.、*、?转义;中文标点可直接输入匹配,换行符须按\r\n或\n显式书写,捕获组引用仅支持$1形式且依赖半角括号。

Notepad++ 正则替换中,点号 .、星号 *、问号 ? 为什么不按字面匹配
因为 Notepad++ 默认使用「PCRE」(Perl 兼容正则)引擎,. 匹配任意字符(除换行),* 和 ? 是量词,不是普通字符。想替换成它们本身,必须转义。
实操建议:
- 在「查找内容」框中输入
\.替换字面句点,\*替换星号,\?替换问号 - 如果要批量清理多个特殊符号(比如
[、]、(、)),用字符组更安全:[\[\]\(\)\{\}]—— 注意方括号和圆括号在字符组内多数无需额外转义,但左方括号[必须放首位或转义,右方括号]放首位或末位才被识别为字面量 - 启用「匹配大小写」和「全字匹配」对特殊字符无效,别开这两个选项白耗时间
中文顿号、省略号、破折号等 Unicode 标点怎么精准替换
Notepad++ 的正则默认支持 UTF-8 编码下的 Unicode 字符,但前提是文件已正确以 UTF-8(无 BOM)打开。若看到乱码或匹配失败,先检查右下角编码状态,必要时用「编码 → 转为 UTF-8 无 BOM」重载。
常见中文标点的正则写法:
- 顿号:
、(直接输入即可,无需转义) - 中文省略号(……):
……或更稳妥地写成\u2026{2}(但 Notepad++ 不支持\u写法),所以推荐直接复制粘贴原文中的两个连续省略号字符 - 中文破折号(——):
——;注意别和英文双连字符--混淆 - 想统一替换所有中文标点为英文标点?可以用
[,。!?;:""''()【】《》]匹配后替换成对应英文符号
替换换行符、制表符、不可见空格的正确写法
这类字符肉眼不可见,但正则能定位。Notepad++ 提供了快捷转义,比手输 Unicode 更可靠。
关键映射关系:
- 换行符:Windows 文件用
\r\n,Unix/Linux 用\n;搜索时建议勾选「扩展(\n, \r, \t, \0, \x…)」模式,然后直接输入\r\n查找回车换行 - 制表符:
\t(同样需启用「扩展」模式) - 全角空格( )、零宽空格(
\u200B)、软连字符(\u00AD):Notepad++ 的 PCRE 不直接支持\u,但可复制粘贴这些字符到查找框;或者用十六进制模式:先开启「查找 → 查找 → 模式:十六进制」,输入200b查零宽空格 - 多个连续空白(含空格、制表、换行)合并为单个空格?用
[ \t\r\n]+替换为(一个半角空格)
为什么勾选「正则表达式」后,$1、$2 不生效或出错
因为 Notepad++ 使用 $1、$2 引用捕获组,但要求「查找内容」中必须有明确的捕获括号 (...),且不能是 (?:...) 这种非捕获组。
典型错误场景:
- 写了
(\d+)-(\d+)却在替换框误输\1.\2—— Notepad++ 只认$1、$2,不支持反斜杠引用 - 用了中文括号
(\d+)—— 正则引擎只识别半角(),中文括号是字面量,不会形成捕获组 - 想保留部分结构并调整顺序,例如把
name=xxx&age=25换成age:25; name:xxx,应写查找:name=(.*?)&age=(.*?),替换:age:$2; name:$1(注意 URL 中的&是 HTML 实体,实际文本里可能是&,需按真实字符调整)
捕获组嵌套、命名组((?P<name>...)</name>)在 Notepad++ 旧版本中支持不稳定,建议优先用位置编号 $1、$2,并验证替换预览是否符合预期。
最常被忽略的一点:正则模式下,^ 和 $ 默认匹配整行开头/结尾,但如果文本含 Windows 换行(\r\n),而你只写了 $,它其实停在 \r 前——此时用 \r?$ 更鲁棒。


















