Notepad++正则替换需对$、(、\等元字符转义,如\$、(、\;普通文本替换应选“普通”或“扩展”模式;含换行符用 (扩展/正则均支持),Tab在扩展模式用 、正则中需 或粘贴;捕获组用( )配合引用,中文/emoji须确保UTF-8编码。

Notepad++ 里用正则替换含 、$、( 等特殊字符的文本
直接写原样字符会被正则引擎当语法处理,比如 $ 匹配行尾、( 开启分组、 转义后续字符——结果就是搜不到、替错了,甚至误删内容。
必须对这些字符做转义,但不是所有地方都一样:
-
在 Notepad++ 正则中本身是转义符,要匹配字面意义的反斜杠,得写成\ -
$、^、.、*、+、?、(、)、[、]、{、}、|这些元字符,需在前面加才能匹配本体,例如$、.、( - 如果只是想按字面替换(不涉及正则逻辑),就别勾选「正则表达式」,改用「普通」或「扩展」模式——这时
、仍可用,但$、(等不用转义
批量替换含换行符或制表符的文本
这类字符看不见,但影响替换结果。比如想把多行文本合并成一行,或把缩进统一为 4 个空格。
关键看模式选择:
- 「扩展」模式支持
(换行)、(回车)、(制表符),不用开正则就能用,最常用 - 「正则」模式下,
和依然有效,但不被识别,得用或实际粘贴一个 Tab 字符 - 想匹配任意空白(含换行+空格+Tab),正则里用
s+;但注意它会跨行匹配,可能一次吞掉大段内容,慎用
示例:把连续多个空行(含可能的空格)换成单个空行,在「正则」模式下搜
s*
,替换成
;更稳妥的做法是先用「扩展」模式删掉每行首尾空格,再处理空行。
替换时保留部分原文,比如只改前缀或后缀
需要捕获组 + 反向引用,典型场景:把所有 log_日期_编号.txt 改成 backup_日期_编号.log。
步骤很明确:
- 开启「正则表达式」模式
- 查找框填:
log_(d{8})_(d+).txt(假设日期 8 位、编号纯数字) - 替换框填:
backup__.log(是第一个括号内容,是第二个) - 注意:括号必须用
(和)转义才能当字面字符;想当捕获组就用英文小括号,不加反斜杠
容易漏的点: 最多支持到 9,超过要用 $1、$2 形式(Notepad++ 7.9+ 支持),但老版本只认
写法。
中文、emoji 或 Unicode 字符替换失败怎么办
Notepad++ 默认编码是 ANSI,打开 UTF-8 文件时若没正确识别,中文会变乱码,搜索自然失效。
先确认并统一编码:
- 菜单栏「编码」→ 看右下角显示,如果是
ANSI但文件含中文,基本就是乱码根源 - 「编码」→ 「转为 UTF-8」(不带 BOM),再试替换;如果原本是 GBK 编码,选「转为 UTF-8-BOM」或「转为 GBK」更稳
- emoji 属于 Unicode 补充平面字符(如 ?),Notepad++ 旧版本(
真正麻烦的是混合编码文件:一部分 ANSI、一部分 UTF-8,这种没法靠 Notepad++ 安全批量替换,得先用 iconv 或 Python 脚本清洗编码。


















