正则表达式,如何在没有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:
答案 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有关于正则表达式的非常好的教程和示例。去拜访吧。