替换除给定字符列表之外的任何字符

时间:2015-03-08 08:35:13

标签: python

import re
email=input('Email address? ')
if re.match("^[A-Za-z0-9.@]*$",email):
    print ('valid')
else:
    line = re.sub('anything except for', '', email)
    print ('Not valid')
    print(line)

如果电子邮件无效,我正在尝试制作一个简单的电子邮件验证程序。在line line = re.sub中有任何方法可以让它替换除列出的字符之外的任何字符。

2 个答案:

答案 0 :(得分:1)

使用否定的字符类。

line = re.sub(r'[^A-Za-z0-9.@]', '', email)

[^A-Za-z0-9.@]会匹配任何字符,但不匹配A-Za-z0-9或点或@。用空字符串替换这些字符将为您提供所需的输出。

答案 1 :(得分:1)

您可以在与^之后的内容匹配的字符类中使用^

例如,如果您的列表包含['a','b']

line = re.sub(r'[^ab]', '', email)

详细了解Negated Character Classes

相关问题