正则表达式,如何过滤任何@ any:to any @ any without'':''?

时间:2015-06-20 10:23:57

标签: python regex

正则表达式,如何在没有any@any:的情况下将any@any过滤到:

我需要一个Python正则表达式代码用于Word List Updater 2.7我想过滤任何邮件,例如:

a@earthlink.net:

b@ozemail.com.au:

最终结果:

a@earthlink.net

b@ozemail.com.au

我有以下正则表达式 -

(^[a-zA-Z0-9_.+-_!@#$%^&*.,?]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$) 

过滤any@any.any

a@earthlink.net

b@ozemail.com.au

而不是

a@earthlink.net:

3 个答案:

答案 0 :(得分:0)

Juts rstrip关闭它,如果它在那里它将被删除,如果没有任何东西将被剥夺:

"anyaddr@any.domain:".rstrip(":")

答案 1 :(得分:0)

请参阅此email regex

emails = ('b@ozemail.com.au', 'a@earthlink.net','a@earthlink.net:')

reg = r"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b"

 for email in emails:
    print(re.match(reg,email).group())

输出;
b@ozemail.com
a@earthlink.net
a@earthlink.net

答案 2 :(得分:0)

你的正则表达式似乎不必要复杂。电子邮件ID的用户名部分必须仅包含字母,数字和句点。某些邮件服务允许使用连字符和下划线。但是gmail严格要求前三个。

因此你的正则表达式如下:

'[\w.]+@[\w.]+'

这也会消除你':'问题,因为冒号引擎不会将冒号':'视为单词字符(\ w)。

您可以使用re模块中的findall()方法查找您提供的字符串中的所有电子邮件ID。它会返回一个列表。

filtered_emails = re.findall(r'[\w.]+@[\w.]+', string)

for email in filtered_emails:
    print email

Google python class有关于正则表达式的非常好的教程和示例。去拜访吧。