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

Python正则表达式求助:匹配HTML页面中特定格式的链接

嘿,我来帮你搞定这个正则匹配的需求!先把你的要求拆解清楚:

匹配规则

我们要抓的是仅来自http://www.example.com域名,且路径满足:

  • 以category开头,后面跟纯数字(比如category1)或-加数字(比如category-12)的分类目录
  • 分类目录后面必须还有至少一段内容路径,最后以/结尾

排除规则

  • 域名不是http://www.example.com的直接排除
  • 分类目录后没有内容、直接以/categoryX/结尾的链接排除

正则表达式方案

直接上能满足需求的正则:

^http://www\.example\.com/category(?:\d+|-\d+)/[^/]+/$

正则各部分解释

  • ^:锚定字符串开头,确保链接从固定域名开始,避免部分匹配
  • http://www\.example\.com/:匹配固定域名,注意.是正则特殊字符,必须用\.转义
  • category(?:\d+|-\d+):匹配分类前缀:
    • category:固定前缀
    • (?:...):非捕获组(不单独提取分组内容,提升效率)
    • \d+|-\d+:匹配两种分类格式——要么是纯数字(比如1),要么是-加数字(比如-12)
  • /:分类目录的结尾斜杠
  • [^/]+:匹配至少一个非斜杠的字符,确保分类后还有有效内容(比如some-content-here)
  • /:链接的结尾斜杠
  • $:锚定字符串结尾,确保链接没有多余后缀

Python代码示例

如果是从HTML源码中提取符合条件的链接,可以这样用:

import re

# 模拟你要解析的HTML内容
html_content = """
<a href="http://www.example.com/category1/some-content-here/">有效链接1</a>
<a href="http://www.example.com/category-12/some-content-here/">有效链接2</a>
<a href="http://www.example.com/category1/">要排除的链接</a>
<a href="http://www.example.org/category-12/some-content-here/">要排除的域名链接</a>
<a href="http://www.example.com/category3/another-post/">有效链接3</a>
"""

# 匹配href属性中的目标链接
pattern = r'href="(http://www\.example\.com/category(?:\d+|-\d+)/[^/]+/)"'
matches = re.findall(pattern, html_content)

print("提取到的有效链接:")
for link in matches:
    print(link)

小提醒

虽然正则能搞定这个场景,但如果你的HTML结构复杂(比如有嵌套标签、转义字符),用BeautifulSoup这类HTML解析库会更可靠——正则解析HTML容易出现边缘情况错误。不过如果只是针对特定格式的链接提取,上面的正则完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:27:58