Sublime正则仅用于本地文本处理,不参与接口运行;需启用多行模式(Alt+M)、用\R匹配换行、UTF-8编码、先Find All再Replace、替换用$1而非\1或${1}、跨行用[\s\S]?、防贪婪用1等。} ↩

Sublime 正则表达式本身不参与后端接口的运行或调试,它只是你在本地快速处理接口返回文本(如 JSON、日志、curl 输出)的离线工具——别指望它发请求、验签名或模拟 session,它的价值在于「把一团乱麻的响应体,三秒切出你要的字段」。
为什么接口响应里搜 ^ 和 $ 总是不按行匹配
后端返回的 JSON 或日志常带换行和缩进,你写 ^"id":\s*\d+, 却只高亮第一行?这不是正则错,是 Sublime 默认把 ^/$ 当作整个文档首尾处理,而非每行边界。
- 必须启用多行模式:点击查找面板右下角 ⇩ 图标(或按
Alt+M),状态栏出现m标志才算生效 - Windows 下接口响应含
\r\n,$会停在\r前,导致看似“没匹配到行尾”;统一用\R更稳(\R匹配任意换行符序列) - 如果状态栏显示编码不是
UTF-8(比如 GBK),中文 key 如"用户ID"可能根本搜不到——先执行File → Save with Encoding → UTF-8 with BOM
Find All 后再 Replace,否则 $1 白写
想从 {"code":0,"data":{"token":"abc123"}} 提取 token 字段,写 "token":"([^"]*)" 查找没问题,但替换框填 $1 却输出字面量 $1?核心问题不在正则,而在流程断点。
-
Ctrl+H打开替换面板后,.*开关和⇧(多行)开关必须分别点亮——查找与替换的正则开关互不影响 - 务必先点
Find All,确认高亮区域精准圈出目标字符串;若没高亮,$1就无从展开 - 替换框里只能用
$1、$2,写\1或${1}全部原样输出;要输出字面量$,得写$$ - 嵌套括号如
"data":\{([^}]*"token":"([^"]*)"),$1是 data 内容,$2才是 token 值——编号严格按左括号出现顺序,不看层级
跨行提取 JSON 字段时,别用 .*?,改用 [\s\S]*?
接口返回的格式化 JSON 经常换行缩进,你写 "name":\s*".*?" 想抓 name 值,结果啥也不匹配?因为 . 默认不匹配换行符,哪怕开了多行模式(⇧)也没用。
-
(?s)前缀虽可用,但必须放在正则最开头,且Ctrl+Shift+F全局搜索时不总生效;[\s\S]*?是更稳定、显式的替代方案 - 提取完整对象:
"user":\s*\{[\s\S]*?\},比"user":\s*\{.*?\}少卡死、不漏行 - 防贪婪吞过头:用
[^}]*替代[\s\S]*?更安全,例如"roles":\s*\[([^\]]*)\]能避免跨到下一个数组 - 如果 JSON 含转义引号(
"desc": "He said \"OK\"."),简单"[^"]*"会提前截断;此时需手动分段或改用外部工具解析,Sublime 原生正则不支持递归或平衡组
删日志中的敏感字段、批量改 URL host,这些操作最容易漏掉边界
调试时批量脱敏或切换测试/生产环境地址,看似简单,一不留神就删掉关键结构或误伤正常字段。
- 删
"password":"xxx"类字段:用"password"\s*:\s*"[^"]*"(,?)替换为""$1,末尾,?保逗号,避免 JSON 语法错误 - 批量改 API host:
https://dev\.api\.example\.com→https://prod.api.example.com,注意点号要转义,否则.匹配任意字符 - 删空响应行或多余换行:用
^\s*$\R?替换为空,别用^\s*$——\s含\n,会破坏行间关系 - 大文件(如 10MB 日志)慎用跨行正则;先
Ctrl+Shift+P → Restrict Find to Selection锁定某次请求段,再操作
真正卡住人的从来不是 [\s\S] 怎么写,而是你点了 Replace All 却忘了先看 Find All 高亮是否准确,或者没意识到替换框里的 $1 和查找框里的 \1 是两套语法——这两个点漏一个,后面所有操作都是在给错误打补丁。

















