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

如何使用正则表达式提取URL的协议、域名与扩展名

嘿,这个需求我经常碰到,用正则表达式完全能轻松搞定!我来给你详细拆解实现方法,保证你一看就懂。

核心思路

首先得明确URL的基本结构:协议://域名.扩展名(可能后面跟着路径,但我们只关心前面这三部分)。正则的关键就是精准定位这三个部分的边界,用捕获组把它们分别提取出来。

正则表达式设计

我给你写一个针对性的正则,还加入了命名捕获组,方便后续直接通过名字提取内容:

^(?P<protocol>[a-zA-Z]+)://(?P<domain>[a-zA-Z0-9.-]+)\.(?P<extension>[a-zA-Z]{2,})(?:/.*)?$

我来逐个解释每个部分的作用:

  • ^:锚定字符串的开头,确保我们从URL最开始匹配
  • (?P<protocol>[a-zA-Z]+):命名捕获组protocol,匹配http、https、ftp这类协议名,支持所有字母组成的协议
  • ://:匹配协议后面固定的://分隔符
  • (?P<domain>[a-zA-Z0-9.-]+):命名捕获组domain,匹配域名(包括子域名,比如blog.example),支持字母、数字、点和横杠(符合域名的合法字符规则)
  • \.:转义后的点,匹配域名和扩展名之间的分隔点
  • (?P<extension>[a-zA-Z]{2,}):命名捕获组extension,匹配扩展名(比如com、org、io),至少2个字母覆盖绝大多数顶级域名
  • (?:/.*)?:非捕获组,用来匹配URL后面可能存在的路径(比如/page1),?表示这部分是可选的,而且不会被捕获,不影响我们要的三个核心部分
  • $:锚定字符串结尾,确保整个URL都符合规则
代码示例(以Python为例)

光有正则不够,我给你写个实际运行的代码示例,直接就能用:

import re

# 测试用的URL,你可以换成自己的
target_url = "https://example.com"
# 上面的正则表达式
url_pattern = r'^(?P<protocol>[a-zA-Z]+)://(?P<domain>[a-zA-Z0-9.-]+)\.(?P<extension>[a-zA-Z]{2,})(?:/.*)?$'

# 执行匹配
match_result = re.match(url_pattern, target_url)

if match_result:
    # 通过捕获组的名字提取内容
    extracted_protocol = match_result.group('protocol')
    extracted_domain = match_result.group('domain')
    extracted_extension = match_result.group('extension')
    
    print(f"提取到的协议:{extracted_protocol}")
    print(f"提取到的域名:{extracted_domain}")
    print(f"提取到的扩展名:{extracted_extension}")
else:
    print("抱歉,这个URL格式不符合预期,请检查!")

运行这段代码,输出会是:

提取到的协议:https
提取到的域名:example
提取到的扩展名:com
一些特殊情况的处理

如果你的URL可能没有协议(比如直接是example.com),可以把协议部分改成可选的,正则调整成这样:

^(?P<protocol>[a-zA-Z]+://)?(?P<domain>[a-zA-Z0-9.-]+)\.(?P<extension>[a-zA-Z]{2,})(?:/.*)?$

这时候如果URL没有协议,protocol会是None,你可以在代码里加个判断处理这种情况。

另外,如果碰到example.co.uk这种多级扩展名的URL,上面的正则会把uk当成扩展名,example.co当成域名。如果需要把co.uk识别成完整扩展名,就得扩展正则的扩展名部分,比如:

^(?P<protocol>[a-zA-Z]+)://(?P<domain>[a-zA-Z0-9.-]+)\.(?P<extension>[a-zA-Z]{2,}(?:\.[a-zA-Z]{2,})?)(?:/.*)?$

不过这个要根据你的实际需求来调整,毕竟不是所有场景都需要处理多级扩展名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:00:18