Sublime 的 和 w 在混合文本中不可靠,因 w 仅匹配 ASCII 字母数字和下划线, 将 _ 视为单词字符;中文四字词需用 [^\s]{4} 加负向断言,空行删除应使用 ^[ \t]*$ 并关闭 . matches newline。

Sublime 的 和 w 在混合文本(尤其含中文、下划线、全角符号)中基本不可信,必须用显式锚点或字符集替代。
为什么 w{4} 在中文里完全不匹配
根本原因是 w 只匹配 ASCII 字母、数字和下划线,对汉字、日文、emoji、全角标点一律无视;而 在 Sublime 的 PCRE 实现中把 _ 和数字也当“单词字符”,导致 user_name 里 name 根本不成立。
- 中文四字词(如“用户登录”)必须用
[^s]{4}+ 负向断言:(? - 想排除变量名中的下划线干扰?直接限定左右边界:
(?:^|[^a-zA-Z0-9_])w{3}(?=[^a-zA-Z0-9_]|$) - 文件编码不是 UTF-8 时,
[u4e00-u9fa5]会失效——先执行File → Reopen with Encoding → UTF-8
^[ ]*$ 是删空行唯一稳的写法
别用 ^s*$:它会把换行符
当作可匹配内容,实际替换后可能吞掉文件末尾的换行,Git 提交时触发 LF/CRLF 报警。
-
^[ ]*$显式只认空格和 Tab,安全可靠 - 若需兼容全角空格(
u3000)或 NBSP(),扩展为:^[ u3000 ]*$ - 务必关闭
. matches newline开关,否则^和$会跨行错位
匹配半角/全角字符必须绕过 w 和 s
Sublime 不提供“字符宽度”原语,只能靠 Unicode 区间硬控:
- 半角 ASCII 符号、字母、数字:
[!-~](ASCII 33–126) - 全角 ASCII 对应字符(如!、A、1):
[uFF01-uFF5E] - 中文常用字:
[u4e00-u9fa5],但得确认文件是 UTF-8 编码 - 想查“半角逗号后跟全角括号”?写成:
,[uFF08uFF09],别依赖W或w
真正容易被跳过的动作,是每次开查找前看一眼右下角状态栏:是否显示 Regex、当前编码是否为 UTF-8、. matches newline 是否按需开启——这三个状态不手动确认,后面所有正则都是在猜。

















