gpt4 book ai didi

用于电子邮件地址的 Python 正则表达式,需要清除点划线

转载 作者:行者123 更新时间:2023-12-01 03:56:56 24 4
gpt4 key购买 nike

我创建了这个正则表达式来清除明显错误的电子邮件地址。对于我的大数据集,它适用于 98% 的情况。

pattern = re.compile('^([a-zA-Z0-9._-]+)([a-zA-Z0-9]@[a-zA-Z0-9])([a-zA-Z0-9.-]+)([a-zA-Z0-9]\.[a-zA-Z]{2,3})$')

问题所在的部分在这里:

([a-zA-Z0-9.-]+)

如果电子邮件地址在域中包含破折号或句点,这是可以的,但我不希望连续允许这两个符号,例如 .- or -.

例如,这些都可以(并且应该与正则表达式匹配):

chris@data.services.com
chris@data-services.com

但这不是(也不应该产生匹配):

chris@data.-services.com

我已经广泛阅读并尝试了在正则表达式中创建另一个组的各种选项,例如 ([\.]|[\-])?无济于事。有人可以帮忙吗?

最佳答案

您可以使用negative look ahead assertion这里

^(?!.*\.-.*$|.*-\..*$)([a-zA-Z0-9._-]+)([a-zA-Z0-9]@[a-zA-Z0-9])([a-zA-Z0-9.-]+)([a-zA-Z0-9]\.[a-zA-Z]{2,3})$

Regex explanation here

Regular expression visualization

<小时/>

更具体的内容是

^(?![a-zA-Z0-9._@-]*\.-[a-zA-Z0-9._@-]*$|[a-zA-Z0-9._-@]*-\.[a-zA-Z0-9._-@]*$)([a-zA-Z0-9._-]+)([a-zA-Z0-9]@[a-zA-Z0-9])([a-zA-Z0-9.-]+)([a-zA-Z0-9]\.[a-zA-Z]{2,3})$
<小时/>

或者如果不允许使用 ..--... 等,则可以使用

^(?![a-zA-Z0-9._@-]*[.-]{2,}[a-zA-Z0-9._@-]*$)([a-zA-Z0-9._-]+)([a-zA-Z0-9]@[a-zA-Z0-9])([a-zA-Z0-9.-]+)([a-zA-Z0-9]\.[a-zA-Z]{2,3})$

关于用于电子邮件地址的 Python 正则表达式,需要清除点划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37289172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com