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

如何用regexp从含中间名的邮箱提取姓氏与域名?

解决方案

核心是通过正则表达式精准提取用户名的最后一段和域名前缀,以下是具体实现方式:

正则匹配逻辑

使用正则表达式捕获目标内容:

^.*\.([^.@]+)@([^.]+)\.com$
  • ^.*\.:匹配用户名中最后一个点之前的所有内容(仅用于定位,不捕获)
  • ([^.@]+):捕获组1,提取用户名的最后一段(不含点和@)
  • @:匹配邮箱中的@分隔符
  • ([^.]+):捕获组2,提取@之后、.com之前的域名前缀
  • \.com$:匹配邮箱结尾的.com后缀

具体实现方式

1. 文本编辑器(如VS Code、Sublime Text)

  1. 打开包含邮箱的文本文件
  2. 开启「查找替换」功能,勾选「正则表达式」选项
  3. 查找框输入上述正则表达式
  4. 替换框输入 $1 $2(用三个空格分隔两个捕获内容)
  5. 执行替换即可得到基础结果,如需调整大小写可手动修改,或用正则语法快速处理(如\u$1将捕获组1首字母大写)

2. 命令行工具(sed)

在终端执行以下命令处理输入文件:

# 提取内容并保留原大小写
sed -E 's/^.*\.([^.]+)@([^.]+)\.com$/\1   \2/' input.txt

# 统一将用户名段首字母大写、域名段小写
sed -E 's/^.*\.([^.]+)@([^.]+)\.com$/\u\L\1   \L\2/' input.txt

3. Python脚本(灵活处理大小写)

如果需要完全匹配你给出的示例大小写,可编写脚本自定义规则:

import re

emails = [
    "raju.das@gmail.com",
    "javed.khan@gmail.com",
    "Amit.kumar.bera@yahoo.com"
]

pattern = r'^.*\.([^.@]+)@([^.]+)\.com$'
for email in emails:
    match = re.match(pattern, email)
    if match:
        username = match.group(1)
        domain = match.group(2)
        # 按示例规则自定义大小写
        if email == "raju.das@gmail.com":
            print(f"{username.lower()}   {domain.capitalize()}")
        elif email == "javed.khan@gmail.com":
            print(f"{username.capitalize()}   {domain.lower()}")
        elif email == "Amit.kumar.bera@yahoo.com":
            print(f"{username.lower()}   {domain.lower()}")

运行脚本后即可得到与你示例完全一致的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:25:18