昨天我已经埋好了伏笔,今天来重点学习re模块。
学习re模块,主要是学习该模块的几个重要的方法。
re.findall
re.findall(pattern,string,flags=0),pattern为匹配正则表达式,string为需要匹配的字符串,flags为控制正则表达式的匹配方式。其返回值是匹配结果的列表。

可以看到,其对字母大小写敏感,如果要忽略字母大小写,可以把flags设置为re.I,I为IGNORECASE的缩写,re.I也可写为re.IGNORECASE。

可以看到,现在已经可以匹配大写字母了。
其中的flags参数还可以设置为re.M(多行匹配),re.S(使.可以匹配换行符)等等
re.match
re.match(pattern,string,flags=0)方法匹配的是字符串的起始位置,匹配成功则返回匹配对象,否则返回None

匹配对象的span=(0,6)是什么意思呢?其实它是指所匹配的字符串在原始字符的位置,从0开始,遵循左闭右开的原则。
如果需要获取匹配结果,可以使用group(num=0)方法

当参数num=0时,返回的是匹配的完整字符串,当num=1时,返回的是匹配的第一个子字符串,依次类推。

我们还可以使用groups()方法来查看其子字符串组成的元组

re.search
re.search(pattern,string,flags=0)方法返回的是第一个成功匹配的字符串

可以看到,re.search()和re.match()的区别就是re.search()不一定要从字符串的起始位置开始匹配,而re.match()则一定要从字符串的起始位置开始匹配。
注意,re.match()和re.search()都只匹配一次。

re.compile
re.compile()用来生成一个正则表达式对象也就是pattern,供 match() 和 search() 这两个函数使用。

re.split
看到这个,大家应该能够想得到字符串中的split方法,这是re模块的分割方法。
看个例子

如果把正则表达式括起来,会发生什么呢?

分割出去的字符(串)也以列表的形式返回。
re.sub
re.sub(pattern,repl, string, count=0,flags=0)是用来替换字符串的方法,repl为替换的字符串,string为要被替换的原始字符串,count为替换次数,注意0不是替换0次,而是不限次数替换。

re.finditer
re.finditer(pattern, string, flags=0)方法和re.findall差不多,只不过其返回的是迭代器。

今天的内容就是这些,大家敲代码去吧,祝学习愉快!!!

网友评论