推荐正则为),非贪婪匹配整个图片语法并用捕获组$1提取url;需勾选regular expression,跨行时额外启用dot matches newline。) ↩

匹配 Markdown 图片语法的正则怎么写
Sublime Text 默认使用 PCRE(接近 Perl)风格正则,但不支持 (? 这类可变长度 lookbehind,所以不能靠“只匹配括号内 URL”这种取巧方式。必须完整匹配整个图片语法,再用捕获组提取链接。
标准 Markdown 图片格式是: 或简写为 ,其中 url 可能含空格、括号、转义符,但实际中绝大多数是带引号或括号包裹的路径/URL。
推荐用这个正则(在 Sublime 的 Find 面板启用 Regular Expression 模式):
]+?))
说明:
-
![.*?]匹配![...],非贪婪防止跨多个图片 -
(([^)]+?))匹配括号内的内容,[^)]+?表示“除右括号外的任意字符,尽可能少”,能正确处理.png)这类含左括号的路径 - 注意:它不处理 URL 中有未转义右括号的极端情况(如
foo)),但这类写法本身已违反 Markdown 规范
如何在 Sublime 里批量提取并替换为纯链接
想把所有  替换成 url 本身?直接用 Find → Replace,Replace 栏填 $1(对应第一个捕获组)即可。
操作步骤:
- 打开 Find 面板(
Ctrl+H/Cmd+H) - 输入正则:
]+?)) - 勾选 Regular Expression 和 Wrap Around
- Replace 栏填:
$1 - 点 Replace All
⚠️ 注意:如果文档里混有普通链接 [text](url),这个正则不会误伤——它开头强制匹配 !。
Convert Chinese patent PDFs/DOCX/DOCs to structured Markdown. Supports patent publications (A/B/U) and office action documents (审查意见通知书/驳回决定/复审决定书/无效宣告请求审查决定书). Uses MinerU for high-quality OCR text extraction (falls back to Tesseract), Python scripts for
处理带空格、引号或转义符的图片路径
有些 Markdown 渲染器允许在括号内加引号,如  或 。原正则 ([^)]+?) 会把引号一起捕获进来,导致结果多出 " 或 '。
更鲁棒的写法是分情况捕获:
([^)]+?))
然后 Replace 填 $2,这样能自动剥离首尾配对的引号。
但要注意:
- Sublime 不支持条件匹配,所以
必须存在且成对;单边引号(如(path.jpg")仍会失败 - 若路径含转义括号(如
)),正则无法识别,得手动清理或换工具(如 Python 脚本) - 实际项目中,95% 的图片路径不含引号,用基础版
([^)]+?)更稳定
为什么不用 !\[[^\]]*\]\(([^)]*)\) 这种写法
有人会写 !\[[^\]]*\] 来避免 ![alt] 中出现 ] 导致截断,但 Sublime 的 [^\]] 在 Windows 路径中可能误判反斜杠(如 ),而且 .*? 在多数场景下足够安全——只要 alt 文本不故意写成  这种畸形结构。
真正容易被忽略的是:Sublime 的正则引擎默认不开启 dot matches newline。如果图片语法跨行(如 ),需额外勾选 Dot matches newline,否则 .*? 无法跨行匹配。
跨行情况少见,但一旦出现,.*? 就会失效,此时应改用 [sS]*? 替代(sS 确保覆盖换行符)。










