You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Regex匹配方括号格式URL并分别提取文本与链接?

解决Markdown链接文本与URL的正则提取问题

嘿,我刚好也处理过类似的需求,你这个问题的核心是要把Markdown链接的文本部分和URL部分作为一个整体来匹配,而不是分开抓方括号和圆括号。我给你一步步拆解解决方案:

1. 基础版正则表达式

首先用这个正则就能精准匹配标准的Markdown链接格式:

\[([^\]]+)\]\(([^)]+)\)

正则各部分解释:

  • \[:转义左方括号(因为[在正则里是特殊字符,用来定义字符集)
  • ([^\]]+):第一个捕获分组,匹配所有不是右方括号的字符,也就是方括号里的链接文本
  • \]\(:匹配闭合的]和紧接着的((同样转义了括号)
  • ([^)]+):第二个捕获分组,匹配所有不是右圆括号的字符,也就是括号里的URL

2. 代码示例(以Python为例)

用这个正则结合语言的正则库,就能轻松提取两个部分:

import re

# 测试用的Markdown链接
sample_link = "[My Favorite Site](https://example.com)"
# 定义正则模式
link_pattern = r"\[([^\]]+)\]\(([^)]+)\)"

# 执行匹配
match_result = re.search(link_pattern, sample_link)

if match_result:
    extracted_text = match_result.group(1)  # 提取链接文本
    extracted_url = match_result.group(2)   # 提取URL
    print(f"提取到的链接文本: {extracted_text}")
    print(f"提取到的URL: {extracted_url}")

运行这段代码会输出:

提取到的链接文本: My Favorite Site
提取到的URL: https://example.com

3. 兼容带引号的URL(进阶版)

如果你的链接里有带引号包裹的URL(比如[Example]("https://example.com/space path")),可以用下面的正则来兼容:

\[([^\]]+)\]\((["']?)([^"')]+)\2\)

这个版本多了对单/双引号的匹配,确保能正确提取带空格的URL。

为什么你之前的正则不行?

大概率是因为你没有把[]和()作为连续的整体来匹配,或者没有正确转义[、]、(、)这些正则特殊字符,导致正则把它们当成了字符集或分组的定义,而不是普通字符来匹配。

内容的提问来源于stack exchange,提问作者darkermuffin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:55:40