![c29266a5c8315d1308c7fa6b22b1f136.png](https://i-blog.csdnimg.cn/blog_migrate/a8efd75b0ff49cc007a0eda04f5adc01.jpeg)
上一次在「正则表达式」一文中分享了正则表达式的基础内容,让大家了解到正则表达式的强大功能。
python自1.5版本起增加了re模块,re模块中提供了一些方法,可以方便在python语言中使用正则表达式,re模块使python语言拥有全部的正则表达式功能。
re模块的方法
python语言中把函数提供的功能叫做方法,re模块提供了各种各样的正则表达式方法。
re.match(pattern, string, flags=0)方法:如果string开始的0或者多个字符匹配到了正则表达式样式,就返回一个相应的匹配对象。如果没有匹配,就返回None.
>>> import re
>>> print(re.match('abc', 'abcdef').group()) # 匹配到开头
abc
>>> print(re.match('abc', 'defabc').group()) # 未未匹配开头,返回None
None
re.search(pattern, string, flags=0)方法:扫描整个字符串找到匹配样式的第一个位置(一旦匹配成功则停止匹配),并返回一个相应的匹配对象。如果没有匹配,就返回None.
>>> import re
>>> print(re.search('d+', 'ab12cd236ef').group()) # 返回第一个匹配
12
>>> print(re.search('d+', 'abcd236ef').group()) # 返回第一个匹配
236
re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None,而re.search匹配整个字符串,直到找到一个匹配对象为止。
re.fullmatch(pattern, string, flags=0)方法:如果整个string匹配到正则表达式样式,就返回一个相应的匹配对象 ,否则就返回None.
>>> print(re.fullmatch('d+', 'ab12cd236ef')) # 未匹配成功
None
>>> print(re.fullmatch('d+', '236')) # 匹配整个字符串
<re.Match object; span=(0, 3), match='236'>
re.findall(pattern, string, flags=0)方法:搜索string,以列表的形式返回全部能匹配到的字串,对string从左到右进行扫描,按找到的顺序返回。
import re
>>> print(re.findall('(w=2u).*(l=1u)', 'n33 w=2u m=2 l=1u')) # 分组
[('w=2u', 'l=1u')]
>>> print(re.findall('d+', 'ab12cd236ef12')) # 匹配所有
['12', '236', '12']
如果样式里存在一到多个组,就返回一个组合列表;如果样式里有超过一个组合的话就是一个元组的列。re.split(pattern, string, maxsplit=0, flags=0)方法:用pattern分开string,如果在pattern中捕获到括号,那么所有的组里的文字也