在python中重新查找模块

时间:2013-05-29 17:55:53

标签: python regex python-2.7

我想得到像“abcdef@aaaa.com”这样的输出,但它只显示“com”作为匹配的表达式。如何使用findall获取完整匹配的表达式?

>>> pat = re.compile('[a-zA-Z0-9][\w\.]{4}[\w\.]*@[a-zA-Z0-9][a-zA-Z0-9]*[.](com|co.in|org|edu)')
>>> pat.findall('abcdef@aaaa.com')
['com']
>>> pat.findall('abcdef@aaaa.com bsdkbsbd@bkdjb.orgkjdd')
['com', 'org']

Required Output:-
['abcdef@aaaa.com']
['abcdef@aaaa.com', 'bsdkbsbd@bkdjb.org']

1 个答案:

答案 0 :(得分:1)

末尾的括号仅捕获最后一组,即comorg

将正则表达式更改为:

[a-zA-Z0-9][\w\.]{4}[\w\.]*@[a-zA-Z0-9]+[.](?:com|co\.in|org|edu)
                                            ^^

这确保没有匹配的组,因此只存储匹配的字符串而不是仅存储分组的部分。

另外,我不确定你为什么放这些逗号。我删除了它们,正则表达式仍然有效。