最稳的正则为href=(["'])(1*)\1,需用捕获组提取$2纯URL,配合折叠script/style、删除注释、过滤伪协议,并用Find in Files跨文件批量处理。"' ↩

Sublime 本身没有“导出链接”按钮,所谓批量导出,就是用正则精准匹配 + 手动复制整理——关键不在功能强弱,而在正则写得准、范围控得严、后续清理不偷懒。
怎么写一个能真正抓到 href 中 URL 的正则
别用 href="(.+?)":遇到 href="a.com" onclick="b.com" 就会多抓一截;也别漏掉单引号或换行打断的情况。
-
href=(["'])([^"']*)\1是最稳的写法:前括号捕获引号类型("或'),\1强制闭合,[^"']*拒绝跨引号,天然防误吞 - 想同时抓
src和data-src?改成(href|src|data-src)=(["'])([^"']*)\2,URL 在$3,不是$2 - 如果文本里有无引号写法(如
href=/path),硬加支持会降低精度,一般跳过更安全
Find All 后怎么只复制纯 URL,不带 href=""
默认 Ctrl+C 复制的是整个匹配片段(比如 href="https://a.com"),不是你要的链接本身。
- 必须用括号把目标包成捕获组:
href=(["'])([^"']*)\1→ URL 在$2 - 点
Find All后,所有$2区域自动高亮;此时直接Ctrl+C,粘贴出来就是纯 URL,每条一行 - 如果结果里混着空行或前后空格,后续用
^\s*$删空行,^\s+|\s+$清首尾空格
为什么抽出来一堆 javascript:void(0) 或 #?
这不是正则错了,是 Sublime 把 <script> 里的字符串、HTML 注释、<style> 块全当普通文本处理了。
- 先按
Ctrl+Shift+P输入Fold Tags,折叠所有<script>、<style>、<noscript>块(折叠后它们不参与查找) - 再用
<!--[\s\S]*?-->查找注释块,Esc跳过不处理 - 抽完再过滤一轮:
^(?!https?://|#|javascript:|mailto:|tel:),勾选^$ matches newline,选中后删掉非外链行
跨文件批量导出(比如整个项目里的所有链接)
单文件 Ctrl+F 不够用,得靠 Ctrl+Shift+F(Find in Files),但路径和正则配置错一点就白跑。
-
Where栏必须填具体路径,例如./src/**/*.html;留空 = 只搜当前打开文件 - 搜索框填
href=(["'])([^"']*)\1,确保右下角.*图标亮起 - 结果页带前缀(如
index.html:123:),复制全部后,用Ctrl+H替换^[^:]+:\d+:(启用正则),清掉路径和行号 - 大目录卡顿?关掉
Exclude filters里的node_modules、.git等无关目录
真正耗时的不是写正则,而是判断哪些 href= 是真实链接、哪些只是字符串。每次提取前花 10 秒扫一眼源码结构,比后期清洗错误数据省半小时。

















