re模块即是Regex,表示正则表达式。
(一)re模块的使用模式:
re模块有两种使用方式:
(一).创建RegexObject(正则对象)方法
首先,用 re模块的compile方法,编译字符串生成一个pattern对象
再用 pattern 的 match方法 匹配 源字符串,返回一个 result(结果)对象
引用 result对象的group方法,打印它即可得到匹配的结果,详细看代码:
import re打印结果: Python
str = r"Python "
sstr = r"Python programer"
pa = re.compile(str) #编译生成模式
res = pa.match(sstr) #用模式匹配字符串
print(res.group())
上面 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打印结果:Python
str = r"Python "
sstr = r"Python programer"
res = re.match(str,sstr)
print(res.group())
当然,res = re.match(str,sstr,re.I) #匹配的结果会忽略大小写,第一个参数是模式字符串,第二个是要被匹配的字符串
(二)re模块的常用方法:
(1)re.match()
作用:用模式 从字符串开头开始匹配字符串
(2)re.search(),第一个参数是匹配模式,第二个参数是要匹配的字符串
作用:用模式匹配字符串,跟 re.match()不同的是,re.search()不要求从字符串的开头开始匹配
如:
import re若上面用的是 re.match()进行匹配的话,则会出现错误,因为abcd并不在字符串的开头,因此用re.match()匹配不到。
reg = r'[a-zA-Z]+'
str = r'123abcd456'
res = re.search(reg,str)
print(res.group())
#打印结果:abcd
(3)re.findall()
作用:匹配字符串中所有符合 模式 的子字符串
如:
import re如上,例如要匹配出 str 中所有的英文字母,要是用 re.search()只会匹配一个,而用re.findall()则会匹配出全部符合的子字符串
reg = r'[a-zA-Z]+'
str = r'123abcd456efgh789ijkl'
res = re.findall(reg,str)
print(res)
#打印结果:['abcd', 'efgh', 'ijkl']
注意: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 recount 的作用是 替换多少次。
pa = re.compile('blue|red|white') # |的作用是 或
res = pa.sub('color','blue socks and red socks',count=1)
print(res)
打印结果:
color socks and red socks
(5)re.split()
作用:分割字符串
如:
import re如上, re.split 的 pa 为 空格,则规定了字符串 str 是以空格为分割基准,re.spilit()返回一个列表
pa = r' '
str = r'life can be good'
res = re.split(pa,str)
print(res)
#打印结果:['life', 'can', 'be', 'good']