你会把它翻译成正则表达式,然后用它来匹配电子邮件地址。
这并不难做到:
import re
def translate_pattern(pattern):
res = []
for c in pattern:
if c == '*':
res.append('.+') # 1 or more
elif c == '.':
res.append('.') # exactly 1
else:
res.append(re.escape(c)) # anything else is a literal character
return re.compile(''.join(res))
该函数返回准备编译的正则表达式:
>>> translate_pattern('baduser*@gmail.com').search('[email protected]')
<_sre.SRE_Match object at 0x107467780>
>>> translate_pattern('baduser*@gmail.com').search('[email protected]')
请注意,由于您的.
为任何字符匹配,以下匹配太:
>>> translate_pattern('baduser*@gmail.com').search('[email protected]')
<_sre.SRE_Match object at 0x1074677e8>
,因为.
匹配gmail-com
中的-
。
是'baduser @ gmailxcom'的有效地址还是只对用户名有效的标志? – eumiro 2013-02-25 11:42:05
baduser*@gmail.com是由管理员提供的字符串。该表达应该阻止例如:[email protected],[email protected]等。 我必须以某种方式转义有效的电子邮件标志,如'。'。和'+'是正则表达式中的特殊字符。 – tunarob 2013-02-25 11:56:41