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

来源:互联网 发布:Linux 日志切割 编辑:程序博客网 时间:2024/05/21 03:17

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


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

re模块有两种使用方式:

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

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

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

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

import restr = 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 restr = 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 restr = 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 rereg = 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 rereg = 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 rea = 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




(5)re.split()

作用:分割字符串

如:

import repa = r' 'str = r'life can be good'res = re.split(pa,str)print(res)#打印结果:['life', 'can', 'be', 'good']
如上, re.split 的 pa 为 空格,则规定了字符串 str 是以空格为分割基准,re.spilit()返回一个列表

0 0
原创粉丝点击