最稳方法是用正则匹配 href 和 src 属性值:href\s=\s["'](1+)["']|src\s=\s["'](1+)["'],可精准提取真实URL,跳过注释、JS字符串等无效内容。"' ↩

直接用正则匹配 href 和 src 属性值最稳
Notepad++ 原生正则就能批量提取真实可用的链接,根本不用装插件。插件反而容易引发编码错乱、正则语法不兼容,甚至批量处理时崩溃。网页里真正被浏览器解析跳转或加载的 URL,90% 都在 href 和 src 属性里,不是满屏搜 http 或 https 就能搞定的。
操作时务必确认文档编码是 UTF-8(菜单栏「编码」→「转为 UTF-8 编码」),否则含中文路径、全角引号或 & 的 HTML 会匹配失败。
在 Ctrl + F 查找对话框中,切换到「查找」标签页,勾选「匹配正则表达式」,输入:
href\s*=\s*["']([^"']+)["']|src\s*=\s*["']([^"']+)["']
这个正则有两个捕获组:$1 是 href 的值,$2 是 src 的值。它天然跳过注释、JS 字符串、CSS url()、mailto:、tel: 等无效链接。
替换导出纯 URL 列表必须走三步闭环
「查找全部」只高亮,不能导出——这是最多人卡住的地方。要拿到可复制的干净列表,必须用「替换」功能把匹配内容单独成行,再清理空行和重复项。
保持上面的正则不变,切到「替换」标签页:
-
查找内容填和上面完全一样的正则 -
替换为填:$1$2\r\n(Windows)或$1$2\n(Linux/macOS) - 点「全部替换」:所有匹配的 URL 会独占一行,其余 HTML 内容被清空
- 再
Ctrl + H,查找内容填:^\s*$(空行),替换为留空,点「全部替换」删空行 - 菜单栏「编辑」→「行操作」→「删除重复行」,去重完成
此时 Ctrl + A 全选 → Ctrl + C → 粘贴到新文件即可保存。
相对路径和模板语法是两大漏点
这个正则能抓到 /api/v1、./img/logo.png 这类相对路径,但不会自动补全协议和域名。是否需要补,得看用途——做爬虫入口可能要人工加 https://example.com 前缀;做前端资源审计则保留原样更准确。
它不覆盖 Vue/React 的绑定写法,比如 :href="url"、{% url 'xxx' %}、v-bind:src。这类需另写规则,例如匹配 :href\s*=\s*["']([^"']+)["'] 单独处理。
另外,data-src、srcset、content(如 meta refresh)等属性也不在默认范围内,有需求再扩展正则分支,别一股脑加一堆 | 导致性能下降或误匹配。
别碰 https?://\S+ 这类“看起来很全”的正则
这个模式看似简单,实则灾难现场:
- 会把
href="mailto:test@example.com"当成 URL 提出来 - 会抓到 JS 字符串里的假链接:
console.log("https://fake.com") - 会跨行截断(除非手动勾选「. 匹配换行符」),而多数人根本没注意这个选项
- 遇到
&实体编码时直接断掉,因为\S不匹配&
真正要提效,不是找“能匹配多少”,而是找“只匹配哪些”。锚定在引号包裹的属性值上,才是可控、可验证、可复现的做法。


















