Sublime Text必须使用PCRE引擎,验证方法是测试\K是否生效;替换/api/v1/路径应使用正向先行断言(/api/)v1(?=/|?|#|$)→$1v2,批量操作须用Find in Files并限定文件路径。

确认正则引擎是 PCRE,不是 Python 或 JS
Sublime Text 默认用 PCRE 引擎,这点必须确认——否则 \K、\R、(?i) 等写法会直接报错或不生效。别被「Find in Files」面板里没报错就误以为对了;常见错误是粘贴了 Python 脚本里的 re.sub(r'v\d+', 'v2', s) 逻辑,结果在 Sublime 里写 v\d+ 却匹配不到,根源就是引擎不兼容。
验证方法:输入 log\.info\(\K.*?,如果高亮从括号后开始,说明 \K 生效;若整个 log.info(...) 都被选中,大概率引擎没切对或语法有误。
匹配带斜杠的 API 版本路径,如 /api/v1/users
目标是把所有 /api/v1/... 批量替换成 /api/v2/...,但不能误伤 /v1/ 出现在 URL 参数或注释里的位置。直接写 /v1/ 太危险,容易跨上下文误替换。
- 安全写法:
(/api/)(v1)(/)→ 替换为$1v2$3,确保只动/api/后面紧跟的版本段 - 更严谨(防
/api/v10被截成v1):(/api/)v1(?=/|\?|#|$)→ 替换为$1v2,用(?=...)做正向先行断言 - 如果版本号含字母如
v1.2,用(/api/)v\d+\.\d+(?=/|\?|#|$),避免.*过度贪婪
跨文件批量更新必须用 Find in Files,不是 Replace All
Replace All 按钮只作用于当前打开的标签页,哪怕你开了 20 个 .http 或 .js 文件,它也不会自动扫其他 tab。真要改整个项目,必须走 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)。
- 路径填
./src/**/*.js或./requests/*.http,别偷懒留空,否则默认只搜当前文件夹 - 勾选
Regular expression(右下角 .* 图标),并关掉Highlight matches,大项目里开着它会卡死 - 替换前先点
Find All,看预览列表是否只包含你预期的那些接口路径——多看一眼比重跑三遍强
替换后检查末尾换行和多余斜杠
正则替换完常埋两个坑:一是末尾多出一个 \R(尤其用 $R? 清空空行时),二是路径变成 /api/v2//users(因原路径结尾已有 /,而你又加了 /)。
- 清理冗余换行:
\R$→ 空(注意关掉. matches newline) - 修复双斜杠:
//→/,但限定范围,比如只在https?://后面出现才处理,避免误杀 CSS 中的//注释 - 最保险的做法:替换完立刻在终端跑
git diff,扫一眼变更是否干净——API 版本这种关键字段,宁可多验一次
真正麻烦的不是写正则,而是确认「哪些文件该进、哪些不该进」,以及「替换后有没有破坏请求头或 query 参数里的 v1 字符串」。别迷信一键全量,先小范围试,再推全局。

















