python regex获取电子邮件地址的第一部分

时间:2013-03-04 20:27:44

标签: python regex

我是python和regex的新手,我想知道如何提取电子邮件地址的第一部分到域名。例如,如果:

s='xjhgjg876896@domain.com'

我希望正则表达式的结果是(考虑到电子邮件ID的所有“种类”,包括数字等...):

xjhgjg876896

我理解正则表达式 - 就像我知道我需要扫描到“@”然后存储结果 - 但我不确定如何在python中实现它。

感谢您的时间。

10 个答案:

答案 0 :(得分:36)

您应该只使用split字符串方法:

s.split("@")[0]

答案 1 :(得分:4)

正如其他人所指出的,更好的解决方案是使用split

如果您真的热衷于使用regex,那么这应该有效:

import re

regexStr = r'^([^@]+)@[^@]+$'
emailStr = 'foo@bar.baz'
matchobj = re.search(regexStr, emailStr)
if not matchobj is None:
    print matchobj.group(1)
else:
    print "Did not match"

并打印出来

foo

注意:这仅适用于SOMEONE@SOMETHING.TLD的电子邮件字符串。如果您要匹配NAME<SOMEONE@SOMETHING.TLD>类型的电子邮件,则需要调整正则表达式。

答案 2 :(得分:0)

几个月前写了EmailExtractor.py。您可能想尝试一下并根据需要进行修改。它提取电子邮件地址。您可以使用“@”(推荐)拆分输出或修改正则表达式。

答案 3 :(得分:0)

已经回答了很好的答案,但我还想把它放进去。

  • 如果我有一封电子邮件john@gmail.com我想得到的只是&#34; john&#34;。

      

    我只想得到&#34; john&#34;

  • 如果我有一封电子邮件john.joe@gmail.com我想得到的只是&#34; john&#34;

      

    我只想得到&#34; john&#34;

所以这就是我所做的:

name = recipient.split("@")[0]
name = name.split(".")[0]
print name

欢呼声

答案 4 :(得分:0)

#!/usr/bin/python3.6


def email_splitter(email):
    username = email.split('@')[0]
    domain = email.split('@')[1]
    domain_name = domain.split('.')[0]
    domain_type = domain.split('.')[1]

    print('Username : ', username)
    print('Domain   : ', domain_name)
    print('Type     : ', domain_type)


email_splitter('foo.goo@bar.com')

输出:

Username :  foo.goo
Domain   :  bar
Type     :  com

答案 5 :(得分:0)

您也可以尝试使用email_split。

from email_split import email_split
email = email_split('xjhgjg876896@domain.com')
email.local  # xjhgjg876896
email.domain  # domain.com

您可以在https://pypi.org/project/email_split/中找到更多内容。祝你好运:)

答案 6 :(得分:0)

您不应使用正则表达式或split

local, at, domain = 'john.smith@example.org'.rpartition('@')

答案 7 :(得分:0)

这是使用索引方法的另一种方法。

s='xjhgjg876896@domain.com'

# Now lets find the location of the "@" sign
index = s.index("@")

# Next lets get the string starting from the begining up to the location of the "@" sign.
s_id = s[:index]

print(s_id)

输出为

xjhgjg876896

答案 8 :(得分:0)

需要安装包 pip 安装 email_split

from email_split import email_split
email = email_split("ssss@ggh.com")
print(email.domain)
print(email.local)

答案 9 :(得分:-1)

下面应该可以帮到你:

 fromAddr = message.get('From').split('@')[1].rstrip('>')
        fromAddr = fromAddr.split(' ')[0]