正则表达式 !\[.*?\]\((.*?)\) 可精准提取markdown中格式的图片url,非贪婪匹配避免跨图错误,但对含空格或括号的非标准链接需人工核对。

用正则匹配 Markdown 图片语法 !\[.*?\]\((.*?)\)
Markdown 中图片的标准写法是 ,比如 。直接用 !\[.*?\]\((.*?)\) 就能精准捕获括号内的 URL。
常见错误现象:
• 用 !\[.*\]\((.*)\)(贪婪匹配)会导致跨多个图片合并成一个长匹配,漏掉中间链接;
• 忘记勾选 .* 正则模式,结果完全不匹配;
• 链接含空格或括号(极少见但存在),此时正则会失效——这类非标准写法需人工核对。
实操建议:
• Ctrl+F 打开查找面板,粘贴 !\[.*?\]\((.*?)\),勾选 Regular Expression 和 Match case(可选);
• 点击 Find All,所有图片链接高亮选中;
• 按 Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS)将每个匹配转为独立光标;
• 再按 →(右方向键)跳到每行末尾,Home 回到行首,删掉 ,只留中间链接。
提取 HTML 中的 src 和 data-src 链接
网页源码里图片通常藏在 <img src="..."> 或懒加载的 <img> 里。不能只靠 src=".*?",否则会误抓注释、<script></script> 里的伪链接。
实操建议:
• 先手动折叠或删除 <script></script>、<style></style>、<!-- ... --> 块(Ctrl+Shift+P → Fold Tags);
• 查找框填 (src|data-src)=(["'])([^"']*),替换框填 ,点击 Replace All;
• 注意:分组编号变了,URL 在 而不是 ;
• 若结果里混入 javascript:void(0) 或 #,再跑一轮过滤正则:^(?!https?://).*$,选中后 Delete。
导出纯文本下载列表并去重
Sublime 默认不自动导出选中内容到新文件,但有快捷路径:Find All 后,按 Ctrl+Shift+P(命令面板),输入 Selection: Copy as Plain Text(部分版本需安装插件),或更通用的做法是 —— 用 Ctrl+Shift+F(全局搜索)把当前文件当“搜索范围”,同样用上面任一正则,勾选 Regular Expression,点 Find All,它会弹出新标签页,列出所有匹配项(带文件名和行号)。删掉行号和冒号前的内容即可。
实操建议:
• 复制全部链接后,粘贴进新文件;
• 按 Ctrl+H,查找 \n,替换为 , 可转成逗号分隔(如需导入 Excel);
• 去重:选中全部,Ctrl+Shift+P → 输入 Sort Lines → Sort Lines (case sensitive),再运行 Remove Duplicate Lines(若没该命令,装 Package Control 后搜 Text Pastry 或 AdvancedNewFile);
• 保存为 links.txt,每行一个链接,最适配后续 Python 下载脚本。
为什么不用 Sublime 直接下载?
Sublime 是编辑器,不是 HTTP 客户端。它没有内置 requests 或 urllib,也不能并发请求、处理重定向、校验状态码或自动重命名冲突文件。强行用 Python 控制台执行下载(如 import requests; requests.get(...))仅适合单张测试,批量下载必然失败或卡死。
容易踩的坑:
• 有人尝试用 Emmet 或 Text Pastry “生成”下载命令,比如拼 wget -O img1.jpg URL,但 Windows 默认无 wget,且没错误处理;
• 把相对路径(如 /uploads/1.jpg)当完整 URL 直接下载,返回 404;
• 忽略 Referer 或 User-Agent 导致某些 CDN 图片返回 403。
正确做法:把整理好的 links.txt 丢给轻量脚本处理。例如用 Python 三行就能跑:
import requests<br>for url in open("links.txt"): requests.get(url.strip()).raise_for_status()——但实际要加异常捕获、限速、文件扩展名推断,这些 Sublime 做不了,也不该让它做。











