sublime text 可用正则高效提取 html 链接,推荐模式 href=([“‘])(1*)1,匹配后用 $2 提取 url;需规避 script、注释中的伪链接,并可扩展至 src 等属性;大文件建议先裁剪再处理,导出需手动整理或二次处理编码。”‘ ↩

sublime text 本身不解析 HTML,不能像浏览器那样“识别链接”,但用正则批量提取 <a href="..."></a> 或 href="..." 这类文本非常高效——前提是 HTML 格式相对规整,且你清楚正则的边界和陷阱。
匹配标准 <a href="..."></a> 链接(含引号类型兼容)
最常见的是双引号包裹的 href,但实际网页中可能混用单引号或无引号(html5 允许),所以正则要兼顾。推荐用这个模式:
href=(["'])([^"']*)1
说明:
• (["']) 捕获开头的引号(单或双),1 确保结尾用同一种引号闭合,避免跨标签误匹配
• ([^"']*) 匹配引号内任意非引号字符,比 .*? 更安全(防止贪婪跨标签)
• 不建议用 href="(.*?)",遇到换行、嵌套引号或注释时容易崩
实操建议:
• 在 Sublime 中按 Ctrl+H(windows/linux)或 Cmd+H(macos)打开替换面板
• 勾选 .*(正则模式)和 Match case(通常可不勾,除非区分大小写)
• 查找框填:href=(["'])([^"']*)1
• 替换框填:$2(只保留 URL 内容)
跳过 JavaScript 和注释里的伪链接
很多网页在 <script></script> 或 <!-- ... --> 里写类似 href="xxx" 的字符串,它们不是真实超链接。Sublime 正则无法真正“理解上下文”,只能靠规避策略:
常见错误现象:
• 替换后出现大量 https://example.com"(末尾多一个引号)
• 提取出 href="javascript:void(0)" 或 href="#" 等无效值
• 从 // href="xxx" 这类注释里也抽出了内容
实操建议:
• 先手动折叠或删掉 <script>...</script> 和 <style>...</style> 块(Ctrl+Shift+P → 输入 Fold Tags 可快速折叠)
• 对于注释,可用查找 <!--[sS]*?--> 先全选并跳过(不替换)
• 若只想提取有效外链,替换后用另一轮正则过滤:^https?:// 或 ^(?!#|javascript:|mailto:)
提取 src、data-url 等其他链接属性
现代网页常把链接藏在 src(图片/脚本)、data-url、content 等属性里。正则结构一致,只需改属性名:
实操建议:
• 复用上面的模式,把 href 换成目标属性名,例如:src=(["'])([^"']*)1
• 多属性一次提取?用 (href|src|data-url)=(["'])([^"']*)2,但注意分组编号会变(URL 在 $3)
• 注意 srcset 是逗号分隔列表,不能直接套用;需先匹配整行再拆分
性能提示:大文件(>5MB)上开正则查找可能卡顿,建议先复制粘贴出 内容再处理。
导出结果为纯文本或 CSV
Sublime 默认替换是原地修改,若想保留原文并另存链接列表,得借助“查找全部”+剪贴板:
实操建议:
• 按 Alt+Enter(Windows/Linux)或 Cmd+Enter(macOS)执行“查找全部”,所有匹配高亮并列在底部面板
• 面板里右键 → copy All,粘贴到新标签页
• 用列编辑(鼠标按住 Alt 拖选)删掉前缀和引号,或再跑一次正则:^[^"]*"([^"]*)".*$ → $1
• 若需 CSV 格式,替换换行符为 , (注意空格),或用插件 column Editor 补逗号
容易被忽略的一点:URL 中的 %20、& 等编码不会自动解码,后续要用 Python 或在线工具二次处理,Sublime 正则不负责解码。