Sublime正则默认不支持Unicode,\w、\b等仅匹配ASCII字符,中文需显式用\u4e00-\u9fa5等范围;全角标点、空格须手动加入字符类;UTF-8编码和正确转义(如$1、$$)是关键。

Sublime 的正则本身不区分语言,但中文、日文、韩文等 Unicode 字符必须显式写进字符类或用 Unicode 范围匹配,否则默认的 \w、\b、\s 全部失效。
为什么 \w 和 \b 在中日韩文本里完全不工作
\w 只匹配 ASCII 字母、数字和下划线(即 [a-zA-Z0-9_]),对汉字、平假名、한글一律无视;\b 依赖 \w 定义“单词边界”,所以 \b测试\b 永远不匹配——因为“测”不是 \w 字符,它前面没有“单词边界”。
- 想匹配中文词?用
[\u4e00-\u9fa5]+(常用汉字)、[\u3040-\u309f\u30a0-\u30ff]+(日文假名+片假名)或[\uac00-\ud7af]+(韩文字母) - 想匹配“中英文混合词”,比如
用户login,得写成[\u4e00-\u9fa5a-zA-Z0-9_]+,不能省略 ASCII 部分 - 想模拟
\b效果?用(? + 目标 + <code>(?![a-zA-Z0-9_\u4e00-\u9fa5])显式限定左右非字字符
全角标点、空格、换行符怎么统一处理
中文文档里最常漏掉的是全角空格(\u3000)、中文逗号(,)、句号(。)和 Windows 的 \r\n 混合问题。Sublime 不会自动把它们当“空白”或“标点”处理。
- 清理所有空白(含全角空格、不间断空格、零宽空格):
[ \t\r\n\f\v\u3000\u00A0\u2000-\u200B\u2028\u2029]+ - 匹配中文句末标点(。,!?;:):
[。,!?;:],注意别用英文半角符号替代 - 跨平台行尾统一用
\R(Sublime 内置通用换行符),比$或\r?\n更稳,尤其在粘贴自 Word 或微信的文本时 - 状态栏编码必须是
UTF-8或UTF-8 with BOM,否则\u4e00类范围会因乱码完全不匹配
替换时保留原始 Unicode 结构的关键细节
多语言文本对缩进、换行、空格敏感,比如 JSON 中文键名、YAML 的缩进对齐、HTML 属性值里的中文。替换一不小心就破坏格式。
- 别用
.*匹配含中文的整行——它不跨行,且无法识别中文换行逻辑;改用(?s)^.*$((?s)让.吃换行,^/$配(?m)才逐行生效) - 捕获组引用必须用
$1,不是\1;要输出字面量$,写$$,比如把价格: $100替成price: $$100 - 批量替换前务必点
Find All看高亮是否精准覆盖目标行,再开Replace Preview(Ctrl+Shift+H)确认$1展开后没丢中文、没吞换行 - 全局替换(
Ctrl+Shift+F)时,Where字段必须限定路径,如src/**/*.vue,docs/**/*.md,避免误改node_modules里带中文的第三方注释
真正卡住人的从来不是语法,而是默认行为:Sublime 不会因为你开了 UTF-8 就自动升级 \w,也不会因为文本里有汉字就让 \b 懂中文语义。所有 Unicode 支持都得手动声明,一个范围写错,整条正则就静默失效。

















