2.6. 正则表达式

正则学习

2.6.1. 是否匹配

In [1]: import re

In [2]: re.match("^\d{3}\-\d{3,8}",'010-12345')
Out[2]: <re.Match object; span=(0, 9), match='010-12345'>

In [3]: if re.match("^\d{3}\-\d{3,8}",'010-12345'):
   ...:     print("match")
   ...: else:
   ...:     print("not match")
   ...:
match

2.6.2. 切分字符串

In [4]: 'a b   c'.split(' ')
Out[4]: ['a', 'b', '', '', 'c']

In [5]: re.split(r'\s+', 'a b   c')
Out[5]: ['a', 'b', 'c']

2.6.3. 分组

In [8]: m= re.match("^(\d{3})\-(\d{3,8})",'010-12345')

In [9]: m.group(0)
Out[9]: '010-12345'

In [10]: m.group(1)
Out[10]: '010'

In [11]: m.group(2)
Out[11]: '12345'

2.6.4. 编译正则

如果一个正则表达式要重复使用几千次,出于效率的考虑,我们可以预编译该正则表达式,接下来重复使用时就不需要编译这个步骤。

In [13]: import re

In [14]:  re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')

In [15]:  re_telephone.match('010-12345').groups()
Out[15]: ('010', '12345')

In [16]:  re_telephone.match('010-8086').groups()
Out[16]: ('010', '8086')