sublime 的 regex 搜索默认不开启,需点击查找面板右下角 .* 按钮或按 alt+r(windows/linux)/cmd+alt+r(macos)启用;使用 pcre 语法,支持 \k、命名组 (?p...) 和固定长度 lookbehind,替换用 $1 而非 \1,大文件卡顿时应优化正则避免回溯爆炸。

Sublime 的 Regex 搜索开关在哪
默认不开启,必须手动勾选 .* 按钮(在查找面板右下角),否则输入的 ^、\d+ 之类全当普通字符串匹配。
常见错误现象:写了一堆正则却没结果,或者只匹配到字面量 \d 而不是数字——八成是忘了点那个小图标。
- Windows/Linux 快捷键:
Ctrl+R(替换)或Ctrl+F(查找)后,按Alt+R切换正则模式 - macOS 对应是
Cmd+F后按Cmd+Alt+R - 如果用命令面板(
Ctrl+Shift+P),搜Find: Toggle Regex也能开关
Sublime 正则语法用 PCRE 还是 Python?
用的是 PCRE(Perl Compatible Regular Expressions),不是 Python 的 re 模块语法,这点特别容易踩坑。
典型差异:
-
\K支持(丢弃左侧已匹配内容),Pythonre不支持 - 命名捕获组写法是
(?P<name>...)</name>(兼容 Python)也支持(?'name'...)和(?<name>...)</name>,但(?P=name)回溯引用写法有效,\g<name></name>无效 - Lookbehind 要求固定长度:
(? ❌ 报错;<code>(? ✅(两个分支等长)
替换时怎么引用捕获组
替换框里不能用 \1 或 $1,必须用 $1(美元符号 + 数字),命名组用 ${name} 或 $<name></name>。
示例:把 func(arg1, arg2) 改成 func(arg2, arg1)
查找:func\(([^,]+),\s*([^)]+)\) 替换:func($2, $1)
- 注意:$ 后面直接跟数字,不要空格;
$10表示第 10 组,不是$1加个0 - 如果组号不存在(比如写了
$99),Sublime 会原样保留该字符串,不报错也不警告 - 想字面量输出
$,得写成$$
大文件里 Regex 搜索卡死怎么办
PCRE 在复杂正则 + 大文本下容易回溯爆炸,尤其含嵌套量词(如 (a+)+b)或模糊边界(.* 开头)时,UI 会假死。
- 优先用更精确的锚定:
^、$、\b,避免无约束的.* - 把
.*换成否定字符类更安全,比如[^"]*替代.*匹配引号内 - Sublime 默认对单个文件搜索限制 10MB,超限自动跳过;可在设置里调高
find_large_file_limit,但不解决性能本质问题
真正难搞的 regex,建议先在在线工具(如 regex101.com,选 PCRE 模式)验证逻辑和回溯步数,再粘进 Sublime。










