Sublime怎么使用正则_Sublime正则搜索教程【精准】

2次阅读

sublime正则搜索需手动启用.*图标,否则d+等无效;删空行用^[ t]*$而非^s*$;全局替换须限定路径并预览。

Sublime怎么使用正则_Sublime正则搜索教程【精准】

正则模式没开,输啥都是白搭

Sublime 的正则搜索默认是关闭的,Ctrl+FCmd+F 打开查找框后,光输入 d+^$ 不会匹配任何东西——它当普通字符串在搜。

  • 必须点击查找面板左下角(或右下角,视版本而定)的 .* 图标,让它变蓝才算激活
  • 快捷键 Alt+R 可快速切换,但图标状态更直观,建议养成“先看再输”的习惯
  • Ctrl+H(替换)和 Ctrl+Shift+F(全局搜索)同样要单独点 .*,否则 $1 会被原样输出,不解析为捕获组
  • 常见错误现象:写 console.log(.*?) 却零匹配 → 八成是 .* 没点亮

函数参数提取:为什么 [^)]+.*? 更安全

想把 getUserInfo(id) 改成 getUserInfo({ id }),关键在准确捕获括号内内容。用 .*? 看似省事,但遇到换行、嵌套或注释就容易“破界”;[^)]+ 明确限定“非右括号字符”,防误吞、避贪婪、天然抗跨行。

  • 查找:getUserInfo(([^)]+))
  • 替换:getUserInfo({ $1 })
  • 若参数含空格或逗号(如 getUserInfo(a, b)),该写法仍成立
  • 但遇到嵌套括号(如 fn(getUser())),Sublime 不支持 (?R) 递归,此时应改用 [sS]*? + 手动校验,或直接分步处理
  • 务必先点 Find All 预览所有匹配,避免把 /* getUserInfo(id) */ 这类注释也卷进去

删空行 / 清行尾空格:别信 s,它会吃换行符

s 在 Sublime 中会匹配 nr,导致 ^s*$ 不仅删空行,还可能误删只有回车符的“假空行”,甚至破坏文件末尾结构。

  • 删真·空行(不含任何字符):^$(最严格)
  • 删含空格/Tab 的空行(推荐):^[ t]*$(显式限定,避开 s 跨行风险)
  • 删行尾空格+Tab:[ t]+$,别用 s+$,否则可能吃掉末尾换行符,保存后文件少一行
  • 执行前勾选 In Selection 可限制范围,比如只处理当前选中的代码块,避免误改配置或注释

全局替换炸库:Where 里填 * 就等于裸奔

Ctrl+Shift+F 全局替换时,Where 字段填 * 是最危险操作——搜 log(.*?) 替换成 console.log$1,可能把你 node_modules 里的第三方库全干掉,甚至改到 README.md 里的示例代码。

  • 精准限定路径:src/**/*.js(匹配 src 下所有 .js 文件)
  • 多后缀过滤:*.ts, *.js(逗号分隔,不加空格)
  • 排除目录:!node_modules, !dist(前面加 !
  • 替换前一定点 Find All,看右下角预览列表是否每条路径都合理;Replace All 没撤回键,误操作只能靠 git 恢复

最常被忽略的不是语法,而是开关状态和作用范围——点错一次 .*,或漏掉一个 !,就可能让重构变成救火。

text=ZqhQzanResources