python小技巧:
1.强烈建议使用Python的r
前缀,就不用考虑转义的问题了。
2.正则表达式的使用:
test = '用户输入的字符串' if re.match(r'正则表达式', test): print('ok') else: print('failed')
3.如果用户输入了一组标签,下次记得用正则表达式来把不规范的输入转化成正确的数组。
re.split(r'[s\,;]+', 'a,b;; c d') ['a', 'b', 'c', 'd']
4.凶残的例子:
1 >>> t = '19:05:30' 2 >>> m = re.match(r'^(0[0-9]|1[0-9]|2[0-3]|[0-9]):(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9]):(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t) 3 >>> m.groups() 4 ('19', '05', '30')
5.
编译
当我们在Python中使用正则表达式时,re模块内部会干两件事情:
-
编译正则表达式,如果正则表达式的字符串本身不合法,会报错;
-
用编译后的正则表达式去匹配字符串。
如果一个正则表达式要重复使用几千次,出于效率的考虑,我们可以预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配:
1 >>> import re 2 # 编译: 3 >>> re_telephone = re.compile(r'^(d{3})-(d{3,8})$') 4 # 使用: 5 >>> re_telephone.match('010-12345').groups() 6 ('010', '12345') 7 >>> re_telephone.match('010-8086').groups() 8 ('010', '8086')
编译后生成Regular Expression对象,由于该对象自己包含了正则表达式,所以调用对应的方法时不用给出正则字符串。