真正能落地的中文清除方案需用\p{Han}\p{Katakana}\p{Hiragana}\u3000-\u303f\uff00-\uffef,覆盖汉字、日文假名及全角标点;操作前须重载UTF-8编码、显示空白符并验证高亮范围。

Sublime Text 里用正则一键清除中文字符,关键不是写对 [u4e00-u9fa5] 就完事——它漏掉大量常用 Unicode 字符(如全角标点、emoji、日韩文),且容易因编码或不可见字符失效。真正能落地的方案,得兼顾覆盖性、安全性和可验证性。
为什么 [u4e00-u9fa5] 不够用
这个范围只覆盖基本汉字区块(CJK Unified Ideographs),但实际代码里常混入:
- 全角 ASCII 字符(如
全角空格、 顿号、 句号) - 中文标点扩展区(
- 括号、 - 浪纹等) - 平假名/片假名(
- 、 - ) - emoji(
- 等多个区块) - 零宽空格(
)、软连字符( )等干扰字符
直接用 [u4e00-u9fa5] 查找替换,会留下大量“看似删干净了,其实还有”的残余。
推荐用 p{Han} + 扩展字符类
Sublime 支持 Unicode 脚本属性语法(基于 PCRE),p{Han} 能匹配所有汉字(含扩展 A/B/C/D 区),比手动拼范围靠谱得多。再补上常见扩展,组合更稳:
查找:[p{Han}p{Katakana}p{Hiragana}u3000-u303fuff00-uffef]
说明:
-
p{Han}:全部汉字(含生僻字、古籍用字) -
p{Katakana}和p{Hiragana}:日文假名 -
u3000-u303f:CJK 符号与标点(顿号、书名号、省略号等) -
uff00-uffef:全角 ASCII(全角字母、数字、标点)
替换框留空,确保右下角 .* 按钮已点亮,再点 Replace All。
清除前必须做三件事
否则极易误删或漏删:
- 先按
Ctrl+Shift+P→ 输入Reopen with Encoding→ 选UTF-8,强制重载文件,排除 BOM 或乱码干扰 - 打开
View → Characters → Show White Space,确认没隐藏的零宽字符(它们会让正则在“看不见的地方”断掉) - 点
Find All(不是直接替换),看高亮是否只落在你预期的中文/全角字符上——如果整行被选中或字符串中间断开,说明有换行或嵌套结构干扰,得加锚点或改写法
想保留注释里的中文?得人工圈定范围
Sublime 没语法树,无法区分「字符串里的中文」和「注释里的中文」。若要保注释、删其他地方的中文,只能分步操作:
- 先用
//.*$或#.*$(开启正则)把单行注释全选中 →Ctrl+Shift+P→Restrict Find to Selection - 再运行上面的中文清除正则,此时只作用于注释内,不会动代码
- 反向:若想删代码里的中文但留注释,就得先把注释块用
/\*[\s\S]*?\*/(勾选.\n)选中并Ctrl+Shift+L拆成多光标,再Ctrl+Shift+P→Expand Selection to Line,最后Ctrl+Shift+K删整行(留注释行本身)
真正的难点从来不在正则怎么写,而在于你是否清楚自己要清的是哪一层文本结构——是纯字符层?还是语义层?Sublime 只处理前者,后者得靠你拆解。











