我编写了一个正则表达式来匹配电子邮件,它适用于一封电子邮件,但对于多封电子邮件,它不起作用。有人能帮我吗?提前感谢!
>>> 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)发布于 2015-12-01 15:58:57
re.search只找到第一次出现。
来自https://docs.python.org/2/library/re.html
“扫描字符串,查找正则表达式模式生成匹配的第一个位置,并返回相应的MatchObject实例。如果字符串中没有匹配模式的位置,则不返回任何位置。”
所以这应该能起作用:
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()发布于 2015-12-01 16:03:49
如果您希望输出是元组,而不是问题中的列表
>>> 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')发布于 2015-12-01 16:08:27
您需要使用findall的re方法,它给出组数学的列表,而.group()只给出第一次匹配。
希望这能有所帮助
>>> 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']https://stackoverflow.com/questions/34024507
复制相似问题