findall()函数的用法,以及匹配标记,匹配范围的操作。
1.findall()函数
1、re.findall(pattern,string,flags=0)1)pattern,正则表达式;string,要检测的字符串;flags匹配标记。2)如果pattern里没有组,或只有一个组,返回列表,元素是匹配到的字符串。
2、如果pattern里存在多于一个组,就返回一个元组的列表。列表的元素是元组,每个元素就是一个匹配到的结果。
2.findall()结合匹配标记
1、多行匹配:re.M(r娣定撰钠e.MULTILINE)如果使用了re.M标记参数,re.findall(patter荏鱿胫协n,string,re.M)正则表达式中'^'匹配字符串的开始,和每一行的开始,也就是换行符后面紧跟的符号;
2、多行匹配中re.findall(pattern,string,re.M);正则表达式中样式字符'$'匹配字符串尾,和每一行的结尾,也就是换行符前面那个符号。
3、re.findall(pattern,string,re.S)如果使用了,re.S标记参数。可让特殊字符.(点)匹配任何字符。
4、上例中如不使用re.S标记参数,匹配不但任何结果。
3.findall()函数的限定匹配范围
1、首先要用函数r娣定撰钠e.compile(pattern,flags=0)建立正则对象。compile()将正则表达坜燔潮蟾式的样式编译为一个正则表达式对象(正则对象),此对象可以调用大多数的正则函数如:Pattern.findall(string[,pos[,endpos]])参数string是要匹配的字符串。后面两个是可选参数。如图例中,findall()不限定范围查找,与re.findall()功能相同。。
2、后两个可选参数[,pos[,endpos]]是字符串的索引,用来限定范围。说白了就是字符串的切片,只不过写法不同:例如:result=pat_Obj.findall(string,0,30)