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

Python正则:用单个模式替换邮箱无效字符(at/dot)

用Python正则一次性替换邮箱无效字符

问题分析

你需要一次性完成两类替换:

  • 将At/at(含圆括号/方括号包裹的情况)替换为@
  • 将dot(含方括号包裹的情况)替换为.
    之前的代码仅覆盖了at相关匹配,缺少dot的处理分支,导致[dot]未被替换。

解决方案

通过正则分支匹配所有目标模式,结合替换函数实现精准替换:

import re

# 定义替换映射
replace_map = {
    'at': '@',
    'dot': '.'
}

def replace_handler(match):
    # 去除匹配内容的括号/方括号,转小写后匹配映射表
    clean_content = match.group().strip('[]()').lower()
    return replace_map.get(clean_content, match.group())

# 测试输入字符串
test_input = "abc[At]xyz.com, abc(at)xyz.com, abcxyz [dot] com"
# 正则模式:匹配三类目标内容
pattern = r'\[(at|dot)\]|\((at)\)|(at|dot)'
# 执行替换,忽略大小写
final_result = re.sub(pattern, replace_handler, test_input, flags=re.IGNORECASE)

print(final_result)
# 输出:abc@xyz.com, abc@xyz.com, abc@xyz.com

代码说明

  1. 正则模式拆解:
    • \[(at|dot)\]:匹配方括号包裹的at/dot(如[At]、[dot])
    • \((at)\):匹配圆括号包裹的at(如(at)、(At))
    • (at|dot):匹配裸写的at/dot(如at、Dot)
  2. 忽略大小写:通过flags=re.IGNORECASE统一匹配At/AT/dot/Dot等变体
  3. 替换逻辑:先去除匹配内容的括号/方括号,转小写后从映射表中取出对应符号,确保替换精准

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:20:47