notepad++提取中文需先转utf-8编码,否则unicode正则失效;推荐用1删非ascii字符,或用\u4e00-\u9fff配合【标记】功能提取汉字,json中应优先捕获引号内值。\x00-\x7f ↩

Notepad++ 提取代码中中文字符,必须先转 UTF-8 编码
ANSI(如 GB2312)编码下,[\u4e00-\u9fff] 或 [^\x00-\x7F] 会失效或匹配错乱——Notepad++ 的正则引擎在非 UTF-8 文件里无法正确解析 Unicode 码点。你 Ctrl+F 能高亮,但 Ctrl+H 替换时可能漏字、崩括号,甚至整行消失。
实操建议:
- 先点菜单栏 编码 → 转为 UTF-8(不是“以 UTF-8 格式编码”,是转换现有内容)
- 保存后重启查找:用
Ctrl+F输入[\u4e00-\u9fff]测试是否准确高亮注释、字符串里的汉字 - 若文件含大量生僻字(如古籍、人名),加扩展区:
[\u4e00-\u9fff\u3400-\u4dbf\u20000-\u2a6df](需 Notepad++ v8.5+)
用 [^\x00-\x7F] 删非 ASCII 是最稳的起点
它不依赖 Unicode 范围,只认字节值 >127,对简体/繁体/日文/全角标点一视同仁,且兼容旧版 Notepad++。但副作用明显:会连中文逗号、句号、引号、全角空格 \u3000 全部干掉。
适用场景:
- 目标是「纯汉字」+ 换行,不要任何标点或空格
- 代码里混着英文变量名、数字、JSON 键名,只想快速剥离中文文本块
- 文件编码不确定,又没时间验证 UTF-8 是否真生效
操作步骤:Ctrl+H → 查找填 [^\x00-\x7F] → 替换为空 → 勾选「匹配正则表达式」→ 全部替换
[\u4e00-\u9fff] 精准保留常用汉字,但要配合捕获组导出
这个范围覆盖了 99% 的代码注释和字符串中文,但本身不提取——它只是匹配。想导出纯汉字列表,得走两步:先标记,再导出。
关键陷阱:
- 直接替换为
$0不等于“提取”,只是把原位置换成相同内容,其他字符还在 - 用
^.*?([\u4e00-\u9fff]+).*?$这类跨行贪婪写法,在大文件里极易卡死或漏匹配 -
\b对中文完全无效,别写\b[\u4e00-\u9fff]+\b,它永远不命中
真正能落地的流程:
-
Ctrl+F→ 输入[\u4e00-\u9fff]→ 切到【标记】页 → 勾选【标记所有】+【标记所在行】→ 【全部标记】 -
搜索 → 书签 → 复制书签行 →
Ctrl+N新建文档 → 粘贴 → 手动删掉每行里的非汉字部分(如// 读取配置只留“读取配置”) - 若需全自动,改用
"([^"]*)"提取双引号内全部内容,再对结果二次过滤汉字
提取 JSON 字符串里的中文,优先用捕获组而非字符类
代码里常见 "msg": "用户不存在" 这类结构,硬套 [\u4e00-\u9fff] 会把 "msg" 里的 m、s、g 当作干扰项误删。更可靠的是定位键值对本身。
推荐正则:
- 匹配中文字符串值:
"[^"]*?"\s*:\s*"([^"]*)"→ 替换为$1\n(注意勾选「匹配新行」) - 排除英文键名干扰:
"[a-zA-Z_][a-zA-Z0-9_]*"\s*:\s*"([^"]*)",确保只捕获 value 部分 - 若值含转义引号(
"text\"more"),Notepad++ 不支持递归匹配,得先预处理或换工具
性能提醒:单行匹配比跨行快 5–10 倍;超过 10 万行的 JSON,建议先导出 key-value 对再筛汉字,别强撑正则一步到位。
最易被忽略的一点:Notepad++ 的「全部替换」会修改原文档,而「在新文档中打开」按钮藏在替换对话框底部右侧,不点它,就只能靠 Ctrl+Z 撤销——很多人试了三次都没发现这个开关。











