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

Jas*_*onB 13 python regex

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

s='xjhgjg876896@domain.com'
Run Code Online (Sandbox Code Playgroud)

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

xjhgjg876896
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的时间.

Dav*_*son 42

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

s.split("@")[0]
Run Code Online (Sandbox Code Playgroud)

  • 您是否只想提出这个答案的问题? (10认同)
  • 这不适用于*John Smith <john.smith@example.org>等电子邮件 (3认同)
  • 这也不适用于在电子邮件地址的第一部分引用 @ 符号的电子邮件。请参阅:http://stackoverflow.com/questions/12355858/how-many-symbol-can-be-in-an-email-address (2认同)

Tux*_*ude 5

正如其他人指出的那样,更好的解决方案是使用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"
Run Code Online (Sandbox Code Playgroud)

它打印出来

foo
Run Code Online (Sandbox Code Playgroud)

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