Sublime Text 可用正则批量提取并转为可点击 Markdown 链接:启用 Regex 模式,用 https?://[^\s"')\]\]+ 匹配 URL,再通过 Find: ^(https?://[^\s"')\]\]+)$ + Replace: [$1]($1) 一键转换;需先清理 href="..." 等干扰,保留编码格式,避免排序打乱上下文,注意剪贴板历史干扰。

能直接用正则批量提取并转成可点击链接,别写脚本——Sublime Text 自带的查找替换 + 正则 + 列编辑完全够用,写 Python 反而慢,还容易漏掉网页源码里藏在注释或 JS 字符串里的 URL。
怎么一次性匹配所有 http/https URL(含路径、参数、锚点)
Sublime 的 Find 必须开 Regex 模式(.* 图标),用这个正则:https?://[^s"')]]+
-
https?匹配 http 或 https,问号是懒惰量词,不加会多吞字符 -
[^s"')]]+表示“非空白、非常见分隔符”的连续字符,比S+更安全——否则会把末尾的逗号、句号、HTML 标签闭合符一起抓进来 - 别用网上流传的超长 RFC 合规正则,实际场景里它会漏掉合法短链(如
https://t.co/abc123),也常误伤 JSON 字段名
提取后怎么快速转成 Markdown 链接格式
选中所有匹配结果(Find All → Ctrl+Enter),然后用列编辑(Ctrl+Shift+L)给每行开头加 [,结尾加 ](url) ——但注意:不能直接在末尾打 ](url),因为 url 是变量。
- 先执行
Find: ^(https?://[^s"')]]+)$,Replace: [$1]($1)(确保勾选Regex和In Selection) - 如果原始文本混有其他内容(比如 HTML 中的
href="..."),先用Find: href="([^"]+)"替换为$1清理一遍再跑主正则 - 遇到带中文或空格的 URL(实际已被编码),别手动解码——Sublime 不处理百分号编码,保留
%E4%BD%A0%E5%A5%BD即可,Markdown 渲染器和浏览器都认
为什么不用 Sublime 的 “Split into Lines” 或 “Sort Lines”?
因为 URL 提取后往往要保留原始上下文顺序(比如日志时间戳前后关系),排序会打乱逻辑;而 Split into Lines 在非换行分隔时不可靠——比如一行里有 3 个 URL,它只会劈开第一处空格,不是按 URL 边界切。
- 真正需要去重时,用
Ctrl+Shift+P→Sort Lines (case sensitive)后再Ctrl+Shift+P→Remove Duplicate Lines - 想导出纯 URL 列表?选中全部匹配项 →
Ctrl+Shift+P→Copy Selected Text,粘贴到新窗口即可,无需保存临时文件 - 如果发现某批 URL 总是漏掉(比如以
//cdn.example.com开头的协议相对链接),正则要补上:(https?://|//)[^s"')]]+
最易忽略的是剪贴板历史干扰:连续多次 Find All 后,Ctrl+V 可能粘贴出上一轮的旧结果。每次提取前手动清空剪贴板(Ctrl+C 空白处),或直接用右键菜单里的 Paste and Indent 避免缩进错乱。


















