import re
re.compile(pattern [, flags])
该函数将某个包含正则表达式的字符串创建为模式对象,使用re.compile()函数进行转换后,re.search(pattern, string)的调用方式就转换为 pattern.search(string)的调用方式,pattern变到外边来,如:
-------- 使用re.compile
'>>> DIGIT_RE = re.compile('\d')
'>>>data = 'bAse730onE4'
'>>>DIGIT_RE.search(data)
<re.Match object; span=(4, 5), match='7'>
-------- 不使用re.compile
'>>>data = 'bAse730onE4'
'>>>re.search('\d',data)
<re.Match object; span=(4, 5), match='7'>
当对某个正则表达式重复使用好多次到时候,可以考虑re.compile函数。
来个脚本实际应用一下:
import re
DIGIT_RE = re.compile('\d')
UPPER_CASE_RE = re.compile('[A-Z]')
LOWER_CASE_RE = re.compile('[a-z]')
def checkio(data):
"""
验证字符串data长度在10以上,同时包含大写字母、小写字母和数字。
满足条件返回True,否则返回False。
"""
if len(data) < 10:
return False
if not DIGIT_RE.search(data):
return False
if not UPPER_CASE_RE.search(data):
return False
if not LOWER_CASE_RE.search(data):
return False
return True
if __name__ == '__main__':
assert checkio('A1213pokl')==False
assert checkio('bAse730onE4')==True
assert checkio('asasasasasasasaas')==False
assert checkio('QWERTYqwerty')==False
assert checkio('123456123456')==False
assert checkio('QwErTy911poqqqq')==True
print('All ok')