Python电子邮件正则表达式不';行不通

Python电子邮件正则表达式不';行不通,python,regex,python-3.x,Python,Regex,Python 3.x,我试图使用正则表达式和Python从文本文件中获取所有电子邮件地址,但它在返回电子邮件时总是返回NoneType。例如: content = 'My email is lehai@gmail.com' #Compare with suitable regex emailRegex = re.compile(r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)') mo = emailRegex.search(content) print(mo.

我试图使用正则表达式和Python从文本文件中获取所有电子邮件地址,但它在返回电子邮件时总是返回NoneType。例如:

content = 'My email is lehai@gmail.com'
#Compare with suitable regex
emailRegex = re.compile(r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)')
mo = emailRegex.search(content)
print(mo.group())

我怀疑问题出在正则表达式中,但无法找出原因。

因为
内容中有空格;删除
^
$
以匹配任何位置:


([a-zA-Z0-9+-]+@[a-zA-Z0-9-]+\[a-zA-Z0-9-]+)

将此作为正则表达式尝试,但我完全不确定它是否适用于您:


([^@\s]+@[^@]+.[^@\s]+)

您的正则表达式与模式不匹配

我通常这样称呼regex搜索:

mo = re.search(regex, searchstring) 
所以如果是你,我会试试

content = 'My email is lehai@gmail.com'
#Compare with suitable regex
emailRegex = re.compile(r'gmail')
mo = re.search(emailRegex, content)
print(mo.group())`
您可以在此处测试您的正则表达式: 这将有助于:

([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)

删除锚:。这是一种检查电子邮件地址的糟糕方法。您不妨只检查
@
是否存在。另请参见。
字符类内部有一个红色标志-您确定要将其从字符类中排除吗?@nhahdh,正如我所说,我不确定它在所有情况下都会起作用,当我面临相同的问题时,它对我起作用。
不应该用来表示字符类中的“交替”。
[@\s]
已经是两个选项的交替
@
或空格字符类。额外的
|
将把文本
|
添加到交替列表中。@nhahdh,我刚刚再次检查,它处理了“我的电子邮件是”lehai@gmail.com“完美,回归”lehai@gmail.com“关于这个问题,我不是在评论你的正则表达式的正确性。我是说
|
不应该在字符类中用作“替换”。