正则表达式是一种用来匹配字符串的强有力的武器。
它可以减少我们很多的时间用来做字符串的判断。

匹配规则说明:

image.png

实例:

image.png

re模块

Python提供re模块,包含所有正则表达式的功能。
建议使用Python的r前缀,就不用考虑转义的问题了。
match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None

import re
a = re.match(r'^\d{3}-\d{3,8}$', '010-12345')
print(a)
运行结果:
<re.Match object; span=(0, 9), match='010-12345'>

常用的表达方法如下:

test = '正则表达式'
if re.match(r'正则表达式', test):
    print('ok')
else:
    print('failed')

切分字符串

正常我们会用split()来拆分字符串:

b = 'a b   c'.split(' ')
print(b)
运行结果:
['a', 'b', '', '', 'c']

这样拆分会将空格也拆分出来,不符合我们的要求:
下面我们使用正则表达式来拆分一下:

b = re.split(r'\s+', 'a b   c')
print(b)
运行结果:
['a', 'b', 'c']

分组

除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group)

m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
print(m)
print(m.group(0))
print(m.group(1))
print(m.group(2))
运行结果:
<re.Match object; span=(0, 9), match='010-12345'>
010-12345
010
12345

我们可以发现,group(0)永远是原始字符串,group(1)group(2)……表示第1、2、……个子串。


周兆东
107 声望21 粉丝

一个java小白的成长之路。。。