能一次性捕获src和data-src的引号内路径,URL实际在$3而非$2;需开启正则模式、用$3复制纯路径,并加协议与后缀过滤确保有效性。

用 (src|data-src)=([\"'])([^\"']*)\2 提取所有图片属性值
这个正则能一次性捕获 src 和 data-src 里的完整引号内内容,比单独写两遍更省事。关键在分组:URL 实际落在 $3,不是 $2——$2 是引号本身(" 或 '),$3 才是你要的路径字符串。
常见错误现象:
• 直接搜 src="(.*)",遇到 src="a.jpg" alt="b" 会贪婪吃到 alt= 后面去;
• 忘记关闭 Regular Expression 模式,结果全不匹配;
• 复制时没选中 $3,粘贴出来全是 src="xxx" 这种带属性名的脏数据。
实操建议:
• Ctrl+F 打开查找面板,输入 (src|data-src)=([\"'])([^\"']*)\2,勾选 Regular Expression;
• 点击 Find All,所有匹配高亮;
• 按 Ctrl+C 复制,此时 Sublime 默认只复制捕获组 $3 内容(即纯路径);
• 若粘贴后出现空行或多余空格,后续可用 ^\s*$ 删除空行,^\s+|\s+$ 清首尾空格。
加协议和后缀过滤,筛掉相对路径和伪链接
提取出来的 src 值里常混着 ./img/logo.png、/static/1.jpg、javascript:void(0) 这类无法直接访问的内容。Sublime 不校验 URL 合法性,得靠正则提前卡住。
推荐查找模式:src\s*=\s*[\"']((?:https?://|//)[^\"'\s>]+?\.(?:png|jpe?g|gif|webp|svg)[^\"'\s>]*)[\"']
说明:
• (?:https?://|//) 强制要求协议或协议相对地址,排除相对路径;
• \.(?:png|jpe?g|gif|webp|svg) 锁定常见图片后缀,大小写不敏感可加 (?i) 前缀;
• 整个 URL 在第一个捕获组,替换或复制都用 $1。
注意点:
• 如果页面用了大写后缀(如 .JPG),不加 (?i) 就会漏掉;
• srcset 是逗号分隔列表,这个正则不适用,得先单独匹配整行再手动拆分;
• data-src 要用同理逻辑,把开头 src 换成 data-src 即可。
批量清理前后冗余字符,只留干净 URL
有时你已经高亮了所有 src="xxx" 片段,但想快速删掉 src=" 和末尾 ",只留中间部分。这时候别手动删——效率低还易错。
实操建议:
• 先用 Ctrl+F 搜 src="([^"]*)" 或 data-src='([^']*)',勾选 Regular Expression,点 Find All;
• 按 Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS),光标自动落到每个匹配的引号内起始位置;
• 按 →(右方向键)跳到引号结尾前,再按 Shift+← 选中全部内容,直接输入或粘贴新内容;
• 若只想提取不修改,复制后用文本编辑器跑一次 ^\s*|\s*$ 清空行首尾空格即可。
容易踩的坑:
• Ctrl+Shift+L 后如果光标没对齐,大概率是正则没写捕获组,或没点 Find All;
• 对含空格的 URL(如 src="logo new.png"),正则会断在空格处——这种非标准写法 Sublime 无解,必须人工核对。
为什么不用 href=(["'])([^"']*)\1 提取图片链接
因为 href 是超链接,不是图片地址。虽然写法类似,但语义和常见值域完全不同:href 可能指向 HTML 页面、PDF、mailto:、javascript:,而图片几乎只出现在 src 或 data-src 中。
误用后果:
• 抽出一堆 href="index.html" 或 href="javascript:open()",还得二次过滤;
• 漏掉懒加载场景下的 data-src,实际图片就丢了;
• 若页面用了 srcset 或 picture + source,单靠 href 正则完全无效。
真正要做的,是盯住 HTML 结构本身:打开源码扫一眼,确认图片主要藏在哪几个属性里,再针对性写正则。花 10 秒看结构,比抽完再清洗省半小时。

















