》准备知识
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
常用的正则表达式模式:
在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,\w可以匹配一个字母或数字,所以:
‘00\d’可以匹配’007’,但无法匹配’00A’;
‘\w\w\d’可以匹配’py3’;
要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符:
\d{3,8}表示3-8个数字,例如’1234567’
为了更好地理解,下面再举一些实例:
》re模块介绍
Python提供re模块,包含所有正则表达式的功能。下面介绍python中常用的正则表达式处理函数。
1.re.match()
re.match 尝试从字符串的起始位置匹配一个模式,如果起始位置匹配成功则返回一个对象,否则match()就返回none。
re.match(pattern, string, flags=0)
>>> import re
>>> re.match(r'^\d{3}\-\d{3,8}$', '010-12345')
<_sre.SRE_Match object at 0x1026e18b8>
>>> re.match(r'^\d{3}\-\d{3,8}$', '010 12345')
>>>
2.re.search()
扫描整个字符串并返回第一个成功的匹配,否则,返回none。
**import re
print(re.search(‘010’, ‘010-12345’).span())**
运行结果为:
(0,3)
3.re.group()分组
除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group)。比如:
^(\d{3})-(\d{3,8})$分别定义了两个组
>>> m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
>>> m
<_sre.SRE_Match object at 0x1026fb3e8>
>>> m.group(0)
'010-12345'
>>> m.group(1)
'010'
>>> m.group(2)
'12345'