你會把它翻譯成正則表達式,然後用它來匹配電子郵件地址。
這並不難做到:
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