正则表达式re模块小结

随声附和 提交于 2020-03-26 07:42:19

re模块的常用方法

1、compile(pattern[,flags])

创建模式对象,一般配合其他方法使用。例如:

import re            #导入re模块
text = 'All that doth flow we cannot liquid name'      #测试用的字符串
pattern = re.compile(r'\bd\w+\b')       #编译正则表达式对象,查找以d开头的单词
print(pattern.findall(text))            #使用正则表达式对象的findall()方法

结果是:

2、search(pattern,string[,flags]) && match(pattern,string[,flags])

search()方法是在整个字符串中寻找模式,返回匹配的对象或者None。用于在整个字符串或指定范围中进行搜索。
match()方法是从字符串的开始处匹配模式,返回匹配的对象或者None。用于在字符串开头或指定位置进行搜索,模式必须出现在字符串开头或指定位置。例如:

import re            #导入re模块
text = 'All that doth flow we cannot liquid name'      #测试用的字符串
pattern = re.compile(r'\b[a-zA-Z]{4}\b')   #查找4个字母长的单词
print(pattern.match(text))   #从字符串开头开始匹配,失败返回空值
print(pattern.search(text))   #在整个字符串中搜索,成功

结果是:

3、findall(pattern,string[,flag])

列出字符串中模式的所有匹配项。用于在字符串中查找所有符合正则表达式的字符串并以列表形式返回。例如:

import re            #导入re模块
text = 'All that doth flow we cannot liquid name'      #测试用的字符串
pattern = re.compile(r'\b\w*a\w*\b')    #查找所有含有字母a的单词
print(pattern.findall(text))
example = 'Or else would fire and water be the same;'
print(re.findall(r"\w+er",example))        #查找所有以字母组合ly结尾的单词

结果是:

4、split(pattern,string[,maxsplit=0])

根据模式匹配项分割字符串。例如:

import re            #导入re模块
text = 'All..that...doth.flow...we.cannot...liquid name'      #测试用的字符串
print(re.split('[\.]+',text))             #使用指定字符作为分隔符进行分割
print(re.split('[\.]+',text,maxsplit=3))      #最多分隔3次
print(re.split('[\.]+',text,maxsplit=2))      #最多分隔2次
print(re.split('[\.]+',text,maxsplit=1))      #最多分隔1次

结果是:

5、sub(pat,repl,string[,count=0])

将字符串中所有pat的匹配项用repl替换。例如:

import re            #导入re模块
text = '''All that doth flow we cannot liquid name
Or else would fire and water be the same;
But that is liquid which is moist and wet
Fire that property can never get.
Then 'tis not cold that doth the fire put out
But 'tis the wet that makes it die, no doubt.'''  #测试用的字符串
pattern = re.compile(r'\bt\w*\b',re.I)  #匹配以t或T开头的单词
print(pattern.sub('%',text))  #将符合条件的单词替换为%
print()
print(pattern.sub('%',text,1))  #只替换1次

结果是:

注意:函数参值flags的值可以是re.I(表示忽略大小写);re.L(支持本地字符集的字符);re.M(多行匹配模式);re.S(使元字符“.”匹配任意字符);re.U(匹配Unicode字符);re.X(忽略模式中的空格,并可以使用#注释)的不同组合。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!