Python电子邮件正则表达式不';行不通
我试图使用正则表达式和Python从文本文件中获取所有电子邮件地址,但它在返回电子邮件时总是返回NoneType。例如: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.
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“关于这个问题,我不是在评论你的正则表达式的正确性。我是说|
不应该在字符类中用作“替换”。