python正则表达式获取电子邮件地址的第一部分

python正则表达式获取电子邮件地址的第一部分,python,regex,Python,Regex,我对python和regex非常陌生,我想知道如何将电子邮件地址的第一部分提取到域名。例如,如果: s='xjhgjg876896@domain.com' 我希望正则表达式的结果是(考虑到所有“种类”的电子邮件ID,即包括数字等): 我知道我需要扫描到“@”,然后存储结果,但我不确定如何在python中实现这一点 谢谢您的时间。您应该使用字符串的方法: s.split("@")[0] 正如其他人所指出的,更好的解决方案是使用split local, at, domain = 'john.sm

我对python和regex非常陌生,我想知道如何将电子邮件地址的第一部分提取到域名。例如,如果:

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

我知道我需要扫描到“@”,然后存储结果,但我不确定如何在python中实现这一点

谢谢您的时间。

您应该使用字符串的方法:

s.split("@")[0]

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

local, at, domain = 'john.smith@example.org'.rpartition('@')
如果您真的喜欢使用
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
的电子邮件,需要调整regex。

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

下面的内容可以帮助您完成此操作:

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

好的答案已经被回答了,但我想把我的答案放在一边

  • 如果我有电子邮件john@gmail.com我只想得到“约翰”

    我只想得到“约翰”

  • 如果我有电子邮件,约翰。joe@gmail.com我只想得到“约翰”

    我只想得到“约翰”

这就是我所做的:

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

输出:

Username :  foo.goo
Domain   :  bar
Type     :  com

您也可以尝试使用电子邮件分割

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

你可以在这里找到更多。祝你好运:)

你不应该使用正则表达式或
split

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

这里是另一种方法,使用索引方法

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
需要安装软件包吗 pip安装电子邮件\u拆分

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

您是否需要使用正则表达式来完成此操作(例如,作为家庭作业或其他事情的一部分)?或者你只是猜测没有其他方法可以做到这一点?如果你确实需要使用正则表达式,你必须阅读关于它们的教程,以及Python
re
模块的教程。如果我只是说“使用
re.match('^(.*?@',s)
”,你将不知道如何使用返回的东西,如何调试或扩展它,等等,那么你的重点是什么?你还想解析这些有效的电子邮件地址吗:
Tony Snow
(Tony Snow)tony@example.com
?您希望从
tony%示例返回什么。com@example.org
?电子邮件地址格式的当前标准如下:如果您需要解析完整的电子邮件地址,而不仅仅是这个简单的表单,那么您甚至肯定不需要正则表达式。在std库和朋友中查看,或者在PyPI上搜索第三方库,如果出于某种原因这不合适。把所有的细节都弄对是非常困难的。这正是python自带电池的原因。这不适用于John Smith@MaksymPolshcha这样的电子邮件:OP没有指定这是一个可能的输入。这不是正则表达式,正如OP所问。你只是想对这个答案提出问题吗?这也不适用于在电子邮件地址的第一部分引用@符号的电子邮件。看:它工作得很好。。修复了一些拼写错误和其他小问题,但效果很好。。在@符号前面加上“firstpart”和“firstpart.withdot”。对于
foo,这将失败。goo@here.domain.com
from email_split import email_split
email = email_split("ssss@ggh.com")
print(email.domain)
print(email.local)