notepad++ 提取汉字需依编码选正则:utf-8下用[^\x00-\x7f]删非ascii,或[\u4e00-\u9fff]精准保留常用汉字;ansi文件须先转utf-8,否则正则失效。

Notepad++ 本身没有「只提取汉字」的内置按钮,所有真正有效的做法都依赖正则表达式 + 替换逻辑。关键不是“提取”,而是“删掉非汉字”,再清理残留——直接匹配汉字范围反而容易漏字或混入标点。
用 [^\x00-\x7F] 匹配所有非 ASCII 字符(含中文、日文、全角符号)
这是最稳的起点:它不挑编码,不管文档是 ANSI 还是 UTF-8,只要字符 Unicode 码点 > 127 就能捕获。比 [^\x00-\xff] 安全,后者在旧版 Notepad++ 中可能误判 Latin-1 扩展字符(比如 é、ñ),甚至触发崩溃。
- 打开替换(
Ctrl+H),勾选「匹配正则表达式」 - 「查找目标」填:
[^\x00-\x7F] - 「替换为」留空 → 点「全部替换」,此时所有非英文字符(包括汉字、全角逗号、emoji、数学符号)都被清空
- 如果目标只是「纯汉字」,这步会连中文标点一起删掉,属于过度清洗;但如果你要的是「剔除所有非英文内容」,这就一步到位
用 [\u4e00-\u9fff] 精确匹配 CJK 基本汉字(简体/繁体正文主力)
这个范围覆盖了 Unicode 中最常用的 20902 个汉字(U+4E00 到 U+9FFF),日常代码注释、配置文案里的中文基本都在这里。它不包含生僻字(如扩展 A/B 区)、不包含中文标点、也不吃全角空格 \u3000 —— 想干净就用它。
- 先用「查找」(
Ctrl+F)测试:[\u4e00-\u9fff]→ 点「在当前文档中查找」,确认高亮是否符合预期 - 再进替换(
Ctrl+H):「查找目标」填同上,「替换为」填$0(保留原字符),然后勾选「匹配正则表达式」+「匹配新行」 - 点「全部替换」后,文档只剩汉字和原有换行;但其他所有内容(字母、数字、标点、空格)都还在 → 这不是提取,是“标记保留”
- 真正提取需两步走:先把非汉字全替成换行或特殊标记,再用「行操作 → 删除空行」或「书签 → 删除未标记行」收尾
别信 [一-龥] 或 [^\x00-\xff],它们在 ANSI 编码下大概率失效
很多老教程推 [一-龥],但它本质是 GBK 编码下的字节区间映射,在 Notepad++ 以 ANSI 模式打开的文件里,这些汉字实际存储为两个字节(如「中」是 \xd6\xd0),正则引擎根本不会按 Unicode 解析——结果就是「长」「东」等字搜不到。同理,[^\x00-\xff] 在 ANSI 下会把每个字节单独判断,导致半截乱码也被当“非英文”匹配。
- 检查当前文件编码:右下角看状态栏,如果是「ANSI」,先「编码 → 转为 UTF-8」再操作
-
[\u4e00-\u9fff]和[^\x00-\x7F]都要求文档处于 UTF-8 或 UCS-2 编码下才可靠 - 如果必须处理 ANSI 文件且不能转码,唯一办法是手动用「查找 → 标记」功能圈出含中文的整行,再用书签剪切导出(见下一条)
大文件或混合内容,优先用「书签 + 剪切」代替正则替换
正则在 5MB 以上文件里容易卡死,尤其是带 .* 或跨行匹配时。而书签是行级操作,不解析内容,响应快、不崩、顺序保真。
- 按
Ctrl+F输入关键词(如中文、title、提示),切到「标记」页签 → 「全部标记」 - 确保没选中任何文本,否则只标记选区内行
- 按
Ctrl+A全选 →Ctrl+X剪切(不是复制!复制在折叠/隐藏视图下会错乱) -
Ctrl+N新建文档 →Ctrl+V粘贴,得到的就是原始顺序的、仅含目标行的干净文本 - 若目标行里还有英文/符号,再对新文档用
[\u4e00-\u9fff]替换清理,比全量处理快得多
真正麻烦的不是写对正则,而是搞清当前文件的编码状态和你要的“汉字”定义——是只要字形像中文,还是必须 Unicode 归类为 CJK?要不要标点?要不要兼容生僻字?这些决定后续每一步的正则写法和容错边界。











