需点击查找面板左下角 .* 图标(或按 Alt+R)启用正则模式,否则 \d+、^$ 等无效;替换和全局搜索同理须手动开启,且路径过滤、元字符选择、预览匹配均影响准确性。

怎么开启正则模式?不是点一下就完事
Sublime 的正则搜索默认是关闭的,必须手动启用——光按 Ctrl+F 或 Cmd+F 打开查找面板还不够,得点击左下角那个 .* 图标(或按 Alt+R),它变蓝才算真正激活。很多人漏掉这步,输了一堆 \d+ 或 ^$ 却没反应,其实是当普通字符串在匹配。
- 在「替换」面板(
Ctrl+H)里同样要单独点.*,否则$1这类捕获组引用会原样输出,不被解析 - 全局搜索(
Ctrl+Shift+F)也需手动点开正则开关,不然console\.log\(.*?\)会被当成字面量搜索 - 大小写敏感(
Aa)和全词匹配(\b)可叠加使用,但它们和正则模式互不依赖——关了.*,Aa仍生效
提取括号内参数:为什么 ([^)]+) 比 (.+) 更安全
想把 getUserInfo(id) 改成 getUserInfo({ id }),关键在准确捕获括号里的内容。用 .+ 看似简单,但遇到嵌套或换行就会跨界匹配;而 [^)]+ 明确限定“非右括号字符”,既防误吞,又天然规避贪婪陷阱。
- 查找:
getUserInfo\(([^)]+)\) - 替换:
getUserInfo({ $1 }) - 如果参数含逗号或空格(如
getUserInfo(a, b)),这个写法仍成立;但若含嵌套括号(fn(getUser())),就得上(?s)\(([^()]|(?R))*\)——不过 Sublime 不支持(?R)递归,此时应改用[\s\S]*?+ 手动校验 - 务必先点
Find All预览所有匹配,避免把/* getUserInfo(id) */这类注释也替换了
删空行 / 清行尾空格:看似简单,元字符选错就留隐患
清理格式时最常写的两个正则:^\s*$ 删空行,[ \t]+$ 删行尾空白。但 \s 在 Sublime 中会匹配换行符(\n、\r),导致 ^\s*$ 可能误删只有回车符的“假空行”;而 [ \t] 显式限定空格和 Tab,更可控。
- 删真·空行(不含任何空白):
^$(最严格) - 删含空白的空行(推荐):
^[ \t]*$(避开\s的跨行风险) - 删行尾空格+Tab:
[ \t]+$,别用\s+$,否则可能吃掉末尾换行符,破坏文件结构 - 执行前勾选
In Selection可限制范围,比如只处理选中的代码块,避免污染配置文件
跨文件批量替换:为什么 Where 里写 src/**/*.js 比 * 强十倍
用 Ctrl+Shift+F 全局替换时,不限定范围等于裸奔。搜 log\(.*?\) 替换为 console.log$1,若 Where 填的是 *,可能误改 node_modules 里的第三方库,甚至改到 .md 文档里的示例代码。
- 精准限定路径:
src/**/*.js(匹配 src 下所有 .js 文件) - 排除干扰目录:
!node_modules, !dist(逗号分隔,前面加!) - 组合过滤:
*.ts, *.js表示只搜这两种后缀 - 替换前一定点
Find看预览列表,确认每条路径都合理;Replace All没撤回键,误操作只能靠 Git 恢复
正则不是越长越厉害,而是越贴近你当前那行代码的真实结构才越稳。每次敲完表达式,盯着 Find All 的高亮结果看三秒——那里藏着所有你没预料到的匹配。










