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

Python中用正则拆分邮箱地址:从james@rmit.edu.au提取指定分段

嘿,这个问题我太懂啦!你想要把邮箱james@rmit.edu.au拆分成用户名james、域名主体rmit和顶级域名au,对吧?原来的方法因为edu.au属于多级顶级域名,直接用split('.',1)只能拿到edu.au,没法单独提取出au,咱们可以用这几种方法解决:

方法一:纯字符串拆分组合

不用正则,靠字符串的rsplit(从右往左拆分)和split(从左往右拆分)搭配就能实现:

email = 'james@rmit.edu.au'
# 第一步:拆分出用户名和完整域名部分
first_part, domain_full = email.rsplit('@', 1)
# 第二步:拆分出域名主体(rmit)和剩下的后缀部分(edu.au)
domain_name, rest_suffix = domain_full.split('.', 1)
# 第三步:从后缀部分的最右侧拆分出顶级域名(au)
tld = rest_suffix.rsplit('.', 1)[-1]

print(first_part)  # 输出: james
print(domain_name) # 输出: rmit
print(tld)         # 输出: au

方法二:正则表达式一次性提取

如果想用正则来实现(毕竟你提到了正则表达式),可以写一个匹配邮箱结构的正则,直接提取出三个目标部分,甚至还能兼容单顶级域名的情况(比如test@example.com):

import re

email = 'james@rmit.edu.au'
# 正则匹配规则:覆盖多级顶级域名和单顶级域名两种情况
pattern = r'^([^@]+)@([^.]+)\.(.*)\.([a-z]+)$|^([^@]+)@([^.]+)\.([a-z]+)$'
match_result = re.match(pattern, email)

if match_result:
    # 处理多级顶级域名的情况(如rmit.edu.au)
    if match_result.group(1):
        first_part = match_result.group(1)
        domain_name = match_result.group(2)
        tld = match_result.group(4)
    # 处理单顶级域名的情况(如example.com)
    else:
        first_part = match_result.group(5)
        domain_name = match_result.group(6)
        tld = match_result.group(7)
    
    print(first_part)  # 输出: james
    print(domain_name) # 输出: rmit
    print(tld)         # 输出: au

这样不管是哪种后缀的邮箱,都能准确拆出你想要的三个部分啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:55:19