python正则表达式学习(一) ---re模块的简介和方法

时间:2021-11-06 03:21:01

re模块即是Regex,表示正则表达式。


(一)re模块的使用模式:

re模块有两种使用方式:

             (一).创建RegexObject(正则对象)方法

首先,用 re模块的compile方法,编译字符串生成一个pattern对象

再用 pattern 的 match方法 匹配 源字符串,返回一个 result(结果)对象

引用 result对象的group方法,打印它即可得到匹配的结果,详细看代码:

import re
str = r"Python "
sstr = r"Python programer"
pa = re.compile(str) #编译生成模式
res = pa.match(sstr) #用模式匹配字符串
print(res.group())
打印结果: Python

上面 sstr 是以 str 为模式匹配的,str是Python,所以匹配出的是 sstr字符串中的 Python 


re模块有一个 flag 为 re.I   (大写 i ),作用为忽略大小写

例如:

pa.compile(str,re.I)   #作用为生成的模式匹配字符时,忽略大小写
如:

import re
str = r"PyThoN "
sstr = r"Python programer"
pa = re.compile(str,re.I)
res = pa.match(sstr)
print(res.group())
##由于忽略了str的大小所以打印出来的结果还是 Python



(二)直接调用 re的match()方法:

直接调用re的match方法,成功会返回一个MatchObject对象

import re
str = r"Python "
sstr = r"Python programer"
res = re.match(str,sstr)
print(res.group())
打印结果:Python

当然,res = re.match(str,sstr,re.I)   #匹配的结果会忽略大小写,第一个参数是模式字符串,第二个是要被匹配的字符串


(二)re模块的常用方法:

(1)re.match()

作用:用模式 从字符串开头开始匹配字符串




(2)re.search(),第一个参数是匹配模式,第二个参数是要匹配的字符串

作用:用模式匹配字符串,跟 re.match()不同的是,re.search()不要求从字符串的开头开始匹配

如:

import re

reg = r'[a-zA-Z]+'
str = r'123abcd456'
res = re.search(reg,str)
print(res.group())
#打印结果:abcd
若上面用的是 re.match()进行匹配的话,则会出现错误,因为abcd并不在字符串的开头,因此用re.match()匹配不到。




(3)re.findall()

作用:匹配字符串中所有符合 模式 的子字符串

如:

import re

reg = r'[a-zA-Z]+'
str = r'123abcd456efgh789ijkl'
res = re.findall(reg,str)
print(res)
#打印结果:['abcd', 'efgh', 'ijkl']

如上,例如要匹配出 str 中所有的英文字母,要是用 re.search()只会匹配一个,而用re.findall()则会匹配出全部符合的子字符串

注意:findall()返回的是一个列表,所以直接打印其返回值即可。




(4)re.sub(a,b,c)

参数a :要被替换的字符串

参数b:替换上去的字符串

参数c:未经处理的字符串


作用:替换被模式 匹配到的子字符串

如用法一:

import re

a = r'bad'
b = r'good'
c = r'life can be bad bad'
res = re.sub(a,b,c)
print(res)
#打印结果:life can be good good

用法二:

import re

pa = re.compile('blue|red|white') # |的作用是 或
res = pa.sub('color','blue socks and red socks')
print(res)
结果:
color socks and color socks

用法三:动用count 参数

import re

pa = re.compile('blue|red|white') # |的作用是 或
res = pa.sub('color','blue socks and red socks',count=1)
print(res)
打印结果:
color socks and red socks
count 的作用是 替换多少次。


(5)re.split()

作用:分割字符串

如:

import re

pa = r' '
str = r'life can be good'
res = re.split(pa,str)
print(res)
#打印结果:['life', 'can', 'be', 'good']

如上, re.split 的 pa 为 空格,则规定了字符串 str 是以空格为分割基准,re.spilit()返回一个列表