Sublime Text正则搜索需手动勾选Find面板右下角的.*按钮启用,否则^d+$等表达式仅作字面匹配;其基于Boost引擎,支持Unicode但不支持条件断言,替换用$1引用捕获组,需注意转义、换行及不可见字符干扰。

Sublime Text 正则搜索怎么开?
默认就开着,但很多人没点对地方——Find 面板里必须勾选 .* 按钮(正则模式开关),不是靠快捷键或设置项“启用”。没点它,写再复杂的 ^.*d+$ 也当普通字符串匹配。
- Windows/Linux 快捷键
Ctrl+H(替换)或Ctrl+F(查找),macOS 是Cmd+H/Cmd+F -
.*按钮在查找框右下角,灰色时为关闭,蓝色高亮才生效 - 不勾选时,
d、^、+全部字面匹配,不会被解析为正则元字符
常用正则写法和 Sublime 特有行为
Sublime 用的是 Boost regex 引擎,语法接近 PCRE,但不支持部分高级特性(比如条件断言 (?(?=x)y|z))。最常踩的坑是转义和换行处理。
-
在查找中匹配换行符,但.默认不匹配换行(需手动开启dotall:勾选.按钮) - 路径或文件名里的反斜杠要双写:
C:\Users\.*\.log,单个会被吃掉 - 中文、emoji 等 Unicode 字符可直接写,
[u4e00-u9fa5]或[p{Han}]都支持(后者更准) - 捕获组用
(),替换时用$1、$2引用,不是
批量替换带引用的场景怎么写安全?
比如把所有 console.log(x) 改成 debug(x),但别误伤注释或字符串里的 console.log——Sublime 没语法感知,只能靠正则逼近。
- 基础写法:
console.log(([^)]*))→debug($1);注意.和(要转义 - 排除注释干扰:加负向先行断言
(?,但 Sublime 不支持可变长度的 <code>(?,所以实际得靠人工预筛选范围(比如先 <code>Ctrl+Shift+P→Restrict Find to Selection) - 替换前务必点
Find All看命中的所有位置,避免跨行或嵌套括号导致截断
为什么有时候正则明明对了却找不到?
大概率是编码或不可见字符干扰。Sublime 按当前文件编码读取内容,UTF-8-BOM、零宽空格、全角空格、软连字符(u200b)都会让正则失效。
- 用
s匹配空白时,可能漏掉全角空格(U+3000),得显式写[ u3000] - 打开
View → Characters → Show White Space,能看见空格、制表符、换行符的真实形态 - 粘贴进来的文本可能带 BOM,用
File → Reopen with Encoding → UTF-8强制重载一次
正则本身没玄学,但 Sublime 对边界和不可见字符极其敏感——写完别急着替换,先 Find All 看结果是否符合预期,比反复试错快得多。

















