Sublime Text批量提取链接依赖正则匹配而非内置功能,核心是写准正则并控制范围:http/https用https?://1+;HTML属性值需捕获引号内内容;跨文件搜索用Ctrl+Shift+F;Markdown和邮箱需注意非贪婪与词边界。"\s>) ↩

Sublime Text 本身不解析网页结构,也没有“提取链接”按钮——所谓批量提取,就是用正则精准匹配文本中符合 URL 格式的字符串,再靠 Find All 高亮选中,最后手动复制。关键不在功能有多强,而在正则写得准不准、范围控得严不严。
怎么用正则匹配常见网址(http/https)
最常用也最容易出错的写法是 https?://[^"\s>)]+。它能覆盖绝大多数真实场景,但要注意几个硬约束:
- 必须勾选
.*(Regular Expression),否则?和+当字面量处理,根本不会匹配 -
[^"\s>)]+表示“非引号、空格、尖括号、右括号”的连续字符,防止匹配到 HTML 标签结尾或换行符后截断 - 不加
\b边界,是因为 URL 常紧跟标点(如https://a.com.),强行加 \b 会漏掉末尾带句点的链接 - 如果文本里有换行打断 URL(比如自动折行的邮件正文),需启用
Match newlines或在正则开头加(?s),但会增加误匹配风险
提取 HTML 中 href/src 等属性值(不是裸 URL)
直接搜 https?:// 会漏掉 href="/path" 或 src="data:image/png;base64,..." 这类相对路径或伪协议。更稳妥的做法是捕获引号内的完整值:
- 匹配
href或src属性:(href|src)=([\"'])([^\"']*)\2 - 复制时只想要 URL 部分?
Find All后,所有匹配被高亮,但默认复制的是整行匹配内容(含href=");必须用括号把目标包成捕获组,比如href=([\"'])([^\"']*)\1,再按Alt+Enter(Win/Linux)或Cmd+Enter(macOS),此时光标只落在([^\"']*)区域,Ctrl+C复制的就是纯 URL - 注意:HTML 注释
<!-- ... -->和<script>里的伪链接也会被扫到,建议先折叠这些区块(Ctrl+Shift+P→Fold Tags)再搜索
跨文件批量抓取(比如整个 logs 文件夹里的所有 404 链接)
单文件 Ctrl+F 不够用,必须上 Ctrl+Shift+F(Find in Files):
-
Where栏务必填路径,例如./logs/**/*.log;留空 = 只搜当前打开的文件,不是全项目 - 搜索框填正则,比如
https?://[^"\s>)]+,并确保右下角.*亮起 - 结果页会带前缀(如
access.log:42:),复制全部后,用Ctrl+H替换掉^[^:]+:\d+:(启用正则),就能清掉路径和行号 - 大目录下卡顿?关掉
Exclude filters里的node_modules等无关目录,或把Where范围缩得更窄
提取 Markdown 图片链接或邮箱时容易踩的坑
这类格式固定的内容看似简单,但正则稍一松懈就漏数据或串行:
- Markdown 图片:
!\[.*?\]\((.*?)\)—— 必须用.*?非贪婪匹配,否则 会被当成一个长匹配,只抽到x) ,这个正则就不捕获<和>,需要额外处理 - 所有提取结果粘贴后,默认每项占一行,但可能带前后空格;建议复制完立刻跑一次
^\s+|\s+$(启用正则)替换为空,再删空行
真正麻烦的从来不是写正则,而是原始文本格式混乱:URL 被折行、引号不闭合、混着 Base64 编码、或者用 javascript:void(0) 占位。这时候与其调参,不如先人工清理几处典型样本,再反推正则要不要加容错逻辑。

















