作者:数据医生
Python 使用re 模块提供了正则表达式处理的能力
re.M 多行模式
re.MULTILNE
re.S 单行模式
re.DOTALL
re.I 忽略大小写
re.IGNORECASE
re.X 忽略表示式中的空白字符
re.VERBOSE
使用 | 位 或 / 运算开启多种选项
方法
编译
re.compile(patten,flags=0)
设定flags, 编译模式,返回正则表达式对象regex。
pattern 就是正则表达式字符串,flags是选项。正则表达需要被编译,为了提高提高效率,这些编译后的结果被保存,下次使用同样的pattern 的时候,就不需要再次编译。
re的其他方法为了提高效率都调用了编译方法,就是为了提速。
单次匹配
re.march(pattern,string,flags=0)
regex.match(string[,pos[,endpos]])
match匹配从字符串开头匹配,regex对象match 方法可以重设定开始位置和结束位置。返回match对象
re.search(pattern,string,flags=0)
regex.search(string[,pos[,endpod]])
从头搜索直到第一个匹配,regex对象search方法可以重设定开始位置和结束位置,返回match对象
re.fullmatch(pattern,string,flags=0)
regex.fullmatch(string[,pos[,endpos]])
整个字符串和正则表达式匹配
全文搜索
re.findall(pattern,string,flags=0)
regex.findall(string[,pos[,endpos]])
对整个字符串,从左到右匹配,返回所有匹配的列表
re.finditer(pattern,string,flags=0)
redex.finditer(string[,pos[,endpos]])
对整个字符串,从左到右匹配,返回所有匹配项,返回迭代器。注意每次迭代返回的是match对象
匹配替换
re.sub(pattern,replacement,string,count=0,flags=0)
regex.sub(reglacement,string,count=0)
使用pattern对字符串string 进行匹配,对匹配项使用repl替换。
replacement可以是string, bytes, function.
re.subn(pattern,replacement,string,count=0,flags=0)
regex.subn(replacement,string,count=0)
同sub返回一个元组(new_string,number_of_subs_made)
字符串分割
字符串的分割函数,太难用,不能指定多个字符进行分割。
re.split(pattern,string,maxsplit=0,flags=0)
re.split分隔字符串
分组
使用小括号的pattern 捕获的数据被放到了组group 中。
match ,search 函数可以返回match 对象;findall 返回字符串列表;finditer 返回一个个match 对象
如果pattern 中使用哦分组,如果有匹配的结果,会在match 对象中
1、使用group(N)方式返回对应分组,1-N 是对应的分组,0返回整个匹配的字符串
2、如果使用了命名分组,可以使用group('name') 的方式取分组
3、也可以使用groups()返回多有分组
4、使用groupdict()返回所有命名的分组