sublime正则查找需手动启用.*按钮,否则元字符被当字面量处理;查找与替换的正则开关独立,跨行匹配需(?s)前缀,捕获组和转义须规范,全局操作须谨慎限定范围。

Sublime 的正则查找不是靠快捷键“自动生效”的,必须手动点亮 .* 按钮,否则所有 d、^、+ 都当普通字符处理——这是 90% 找不到匹配项的根本原因。
Ctrl+F 打开查找框后,.* 按钮在哪?
它在查找面板右下角(部分旧版在左下角),灰色表示关闭,点击变蓝才启用正则引擎。不点它,输 d+ 就是在搜字面字符串 "d+",不是数字;写 ^$ 也只匹配内容恰好是 "^$" 的那行。
- Windows/Linux 快捷键:
Alt+R可切换,但图标状态更可靠,建议养成“先看按钮再输正则”的习惯 - macOS 是
Cmd+Alt+R,注意不是Cmd+R(那是重新加载) -
Ctrl+H(替换)和Ctrl+Shift+F(全局搜索)里的 .* 同样要单独点——查找和替换的正则开关完全独立
为什么 console.log(.*?) 总是零匹配?
常见错误不是正则写错,而是:没点 .*、点了但没注意点号 . 默认不匹配换行符、或者括号没转义。Sublime 的 . 只匹配除
外的任意字符,.*? 遇到跨行就断掉。
- 函数调用类匹配,优先用
console.log([^)]*),比.*?更稳、更防误吞 - 点号要匹配换行?得加
(?s)前缀:(?s)console.log(.*?),但大文件里慎用,容易卡顿 - 小括号、方括号、点号这些元字符,在 Sublime 里必须转义才能当字面量用:
.、[、(
替换时 $1 不生效?检查这三处
$1 只在正则启用且捕获组存在时才被解析。如果它原样输出,八成是以下某处没对:
- 查找框点了 .*,但替换框没点——两个开关独立,缺一不可
- 查找表达式里没写括号捕获组,比如写了
d+却想用$1,得改成(d+) - 想插入字面反斜杠?替换框里写
\才能得到一个;写是换行,不是两个字符
删空行或清空格,别直接抄 s*
s 在 Sublime 中会匹配
和
,导致 ^s*$ 不仅删空行,还可能吃掉文件末尾的换行符,保存后文件少一行。
- 删真·空行(不含任何空白):
^$ - 删含空格/Tab 的空行(推荐):
^[ ]*$,显式限定,安全 - 删行尾空格+Tab:
[ ]+$,别用s+$,否则可能破坏换行结构 - 执行前务必勾选
In Selection或限定文件范围,避免把package.json或注释块一起干掉
最常被忽略的其实是跨文件操作:全局替换时 Where 字段填 * 等于把刀递给别人。真正要用,得写 src/**/*.js 或 !node_modules, !dist,而且点 Find All 预览路径列表——没撤回键,改错了只能靠 Git 拉回来。











