notepad++原生正则可精准提取href/src中的url,无需插件;需用utf-8编码,正则为href\s=\s["'](1+)["']|src\s=\s["'](1+)["'],替换为$1$2后清理空行并去重。"' ↩

Notepad++ 原生就能提取网页中的 URL,根本不需要插件——加装插件反而容易引入编码冲突、正则语法不兼容或批量处理崩溃等问题。
href 和 src 属性才是真实链接的主阵地
网页里真正可跳转的 URL 90% 都在 href 和 src 属性里,不是满屏搜 http 或 https。盲目匹配 https?://[^\s]+ 会漏掉相对路径(如 /api/v1、./img/logo.png),也会误抓注释、JS 字符串或 HTML 注释里的假链接。
- 打开 Notepad++ →
Ctrl + F→ 切到「查找」→ 勾选「匹配正则表达式」 - 输入:
href\s*=\s*["']([^"']+)["']|src\s*=\s*["']([^"']+)["'] - 这个正则用了两个捕获组:
href的值落在第 1 组($1),src的值落在第 2 组($2) - 务必先确认编码是 UTF-8(菜单栏「编码」→「转为 UTF-8 编码」),否则中文路径或全角引号会导致匹配失败
用替换导出纯净 URL 列表,不是靠“查找全部”复制
「查找全部」只高亮、不导出,手动复制效率低还易漏行。真正能批量导出的路径是「替换」+「清理」闭环:
- 保持上面的正则不变,切到「替换」标签页
- 「替换为」填:
$1$2(注意不是$1或$2单独一个) - 点「全部替换」:所有匹配的 URL 会单独成行,未匹配行变空
- 再
Ctrl + H→ 查找^\s*$(空行),替换为空,删掉所有空白行 - 菜单栏「编辑」→「行操作」→「删除重复行」,去重完成
相对路径、模板语法和 JS 拼接是三大漏点
提取结果看似完整,但以下三类内容原生正则完全覆盖不了,必须人工介入或另写规则:
-
src和href里的相对路径(如../css/main.css)不会自动补全协议和域名,需后期统一加前缀 - Vue/React 的绑定写法(如
:href="url")、Django 模板(如{% url 'login' %})不在href="..."文本结构内,原正则无法捕获 - JavaScript 动态拼接(如
location.href = '/login?from=' + path)根本没href=属性,得先搜location.href、fetch(、axios.get(等关键词,再逐行检查引号内字面量
最常被忽略的是编码和分组顺序:UTF-8 缺失导致引号匹配失败,$1$2 写成 $2$1 会让 src 链接排前面、href 排后面,后续去重或排序时容易混淆来源。这些细节错一点,结果就少一半。











