我写了一个正则表达式来匹配电子邮件,它适用于一封电子邮件,但对于多封电子邮件,它不起作用。有人可以帮帮我吗?提前谢谢!
>>> 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)
答案 0 :(得分:1)
re.search只查找第一次出现。
来自https://docs.python.org/2/library/re.html
“扫描字符串,查找正则表达式模式产生匹配的第一个位置,并返回相应的MatchObject实例。如果字符串中的位置与模式匹配,则返回None”
所以这应该可以解决问题:
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 :(得分:0)
如果您希望输出为元组而不是问题中的列表
>>> 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')
答案 2 :(得分:0)
您需要使用findall
的{{1}}方法,它会为您提供小组数学列表
而re
仅给出第一场比赛
希望这有帮助
.group()