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

如何使用Regex从HTML文档中提取域名?

嘿,我来帮你搞定用正则从HTML文档里提取域名的事儿!不过先给你打个预防针:用正则解析HTML其实不是最优解——毕竟HTML的结构太灵活了,标签嵌套、属性换行、特殊字符啥的分分钟让正则失效。但如果是简单场景,或者你确实得用正则,下面的方法可以试试~

方法1:匹配HTML中所有带协议的URL并提取域名

HTML里的域名大多藏在<a href>、<img src>这类属性里,或者直接是文本中的完整URL。先写一个基础正则,先匹配完整URL,再提取核心域名部分。

正则表达式示例

https?://(?:www\.)?([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+)

正则解释:

  • https?://:匹配http://或https://协议头
  • (?:www\.)?:?:表示非捕获组,这里匹配可选的www.前缀,不会把它算进我们要的域名里
  • ([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+):这是核心的捕获组,匹配多级域名(比如example.com、sub.example.co.uk)

代码示例(Python)

import re

# 示例HTML内容
html = '''
<a href="https://www.example.com/home">首页</a>
<img src="http://blog.example.co.uk/cover.jpg">
<p>访问我们:https://another-site.org</p>
'''

# 编译正则
pattern = re.compile(r'https?://(?:www\.)?([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+)')
# 找到所有匹配项
matches = pattern.findall(html)
# 去重后输出域名
unique_domains = list(set(matches))
print(unique_domains)
# 输出: ['example.com', 'another-site.org', 'blog.example.co.uk']
方法2:精准匹配HTML标签属性中的域名

如果你只想提取<a>的href或<img>的src里的域名,可以写更针对性的正则:

<(?:a|img)[^>]+(?:href|src)=["']https?://(?:www\.)?([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+)["']

这个正则会只匹配<a>和<img>标签里的绝对URL,避免提取文本中无关的URL。

务必注意:正则的局限性

再强调一次,正则真的不适合复杂HTML场景:

  • 如果标签属性用单引号、或者属性值里有转义字符,正则可能匹配失败
  • 相对路径(比如/about)没有域名,正则会直接忽略
  • 嵌套标签、注释里的URL可能被误匹配
更靠谱的替代方案

如果要处理复杂HTML,强烈建议用HTML解析库+URL解析工具,比如Python的BeautifulSoup和urllib.parse:

from bs4 import BeautifulSoup
from urllib.parse import urlparse

soup = BeautifulSoup(html, 'html.parser')
domains = set()

# 提取所有a标签的href域名
for link in soup.find_all('a', href=True):
    parsed_url = urlparse(link['href'])
    if parsed_url.netloc:  # 确保是绝对URL
        # 可选去掉www前缀
        clean_domain = parsed_url.netloc.replace('www.', '')
        domains.add(clean_domain)

# 提取所有img标签的src域名
for img in soup.find_all('img', src=True):
    parsed_url = urlparse(img['src'])
    if parsed_url.netloc:
        clean_domain = parsed_url.netloc.replace('www.', '')
        domains.add(clean_domain)

print(list(domains))

这个方法能处理各种奇葩HTML结构,比正则靠谱100倍!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:10:05