首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过正则表达式匹配多个电子邮件?

如何通过正则表达式匹配多个电子邮件?
EN

Stack Overflow用户
提问于 2015-12-01 15:54:00
回答 3查看 64关注 0票数 0

我编写了一个正则表达式来匹配电子邮件,它适用于一封电子邮件,但对于多封电子邮件,它不起作用。有人能帮我吗?提前感谢!

代码语言:javascript
复制
>>> import re
>>> str = "my email are 670578362@qq.com and 178263745@163.com"
>>> r = re.search(r'[A-Za-z0-9\.+_-]+@[A-Za-z0-9]+\.[a-zA-Z]+',str)
>>> print r.group()
670578362@qq.com # I want to get (670578362@qq.com, 178263745@163.com)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-01 15:58:57

re.search只找到第一次出现。

来自https://docs.python.org/2/library/re.html

“扫描字符串,查找正则表达式模式生成匹配的第一个位置,并返回相应的MatchObject实例。如果字符串中没有匹配模式的位置,则不返回任何位置。”

所以这应该能起作用:

代码语言:javascript
复制
import re
str = "my email are 670578362@qq.com and 178263745@163.com"
for r in re.finditer(r'[A-Za-z0-9\.+_-]+@[A-Za-z0-9]+\.[a-zA-Z]+',str):
    print r.group()
票数 1
EN

Stack Overflow用户

发布于 2015-12-01 16:03:49

如果您希望输出是元组,而不是问题中的列表

代码语言:javascript
复制
>>> import re
>>> str = "my email are 670578362@qq.com and 178263745@163.com"
>>> r = re.findall(r'[A-Za-z0-9\.+_-]+@[A-Za-z0-9]+\.[a-zA-Z]+',str)
>>> r = tuple(r) # ('670578362@qq.com', '178263745@163.com')
票数 0
EN

Stack Overflow用户

发布于 2015-12-01 16:08:27

您需要使用findallre方法,它给出组数学的列表,而.group()只给出第一次匹配。

希望这能有所帮助

代码语言:javascript
复制
>>> import re
>>> str = "my email are 670578362@qq.com and 178263745@163.com"
>>> r = re.findall(r'([A-Za-z0-9\.+_-]+@[A-Za-z0-9]+\.[A-Za-z0-9\.+_-]+)',str)
>>> r
['670578362@qq.com', '178263745@163.com']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34024507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档