python中re模块的findall,python正则表达式findall
在python中可以直接调用re模块实现正则匹配,其中re.findall()函数可以遍历匹配,得到字符串中所有匹配的字符串,并返回一个列表。本文主要介绍re模块findall()函数的Python正则表达式的相关信息,供大家参考。
一、re.findall函数介绍
其定义见回复:
def findall(模式,字符串,标志=0):
返回字符串中所有非重叠匹配的列表。
如果模式中存在一个或多个捕获组,则返回
组列表;这将是一个元组列表,如果模式
有多个组。
结果中包含空匹配。
return _compile(模式,标志)。findall(字符串)
返回字符串中所有匹配模式的字符串,返回形式为数组。
find()函数的两种表示
进口re
kk=re.compile(r\d )
kk . find all( one 1 two 2 three 344 )
#[1,2,3,4]
#注意这里findall()的用法,可以传递两个参数;
kk=re.compile(r\d )
re.findall(kk, one123 )
#[1,2,3]
二、实例代码
后面会解释代码的各个部分,先列出来~
进口re
str=aabbabaabbaa
# A . 匹配除\n(换行符)以外的任何字符
print(re.findall(ra.b ,str))#[aab , aab]
# *前面的字符出现0次或多次
print(re.findall(ra*b ,str))#[aab , b , ab , aab , b]
#贪婪,匹配一切从。*从前到后。
print(re.findall(ra。*b ,str))#[aabbabaabb]
#非贪婪,遇到的时候截取开头和结尾,所以截取多个匹配的结果,即使中间没有字符。
print(re.findall(ra。*?b ,str))#[aab , ab , aab]
#不贪心,同上,只不过比上面多了一个括号,只保留括号的内容。
print(re.findall(ra。*?)b ,str))#[a ,, a]
str=aabbab
aabbaa
Bb #后面还有两个B。
#没算最后一个断行的aab
print(re.findall(ra。*?b ,str))#[aab , ab , aab]
#回复。s不会中断\ n。
print(re.findall(ra。*?b ,str,re。S))#[aab , ab , aab , aa\n b]
三、re.findall中正则表达式(.*?)
是一个字符串
str=aabbabaabbaa
1.符号。匹配除了\n(换行符)以外的任何字符。
print(re . find all(r a b ,str))
#[aab , aab]
2.符号*前的字符出现了0次或更多次。
print(re.findall(ra*b ,str))
#[aab , b , ab , aab , b]
3.符号。*贪婪,匹配一切从。*从前到后。
print(re.findall(ra。*b ,str))
#[aabbabaabb]
4.符号。*?非贪,首尾拦截。因此,多个匹配的结果将被截取,中间没有字符。
print(re.findall(ra。*?b ,海峡))
#[aab , ab , aab]
5.符号(。*?)不贪心。和上面一样,只是比上面多了一个括号,只保留括号的内容。
print(re.findall(ra。*?)b ,str))
#[a ,, a]
关于括号和括号的区别。
进口re
string= abcdefg acbdgef abcdgfe cadbgfe
#不带括号
regex=re.compile(((\ w)\ s \ w))
print(regex.findall(string))
# output: [(abcdefg acbdgef , abcdefg ),( abcgfe cadbgfe , abcdgfe )]
regex 1=re.compile((\ w)\ s \ w )
print(regex1.findall(string))
# output: [abcdefg , abcdgfe]
regex2=re.compile(\w \s \w )
print(regex2.findall(string))
# output: [abcdefg acbdgef , abcdgfe cadbgfe]
第一个正则表达式有两个括号,其输出列表包含两个元组。第二个正则表达式有一个括号,它的输出内容是括号匹配的内容,而不是整个表达式的结果。第三个正则表达式中没有括号,它的输出是整个表达式匹配的内容。其实不是python特有的,是规律性特有的。任何使用正则性的高级语言都可以满足这个特性:有括号的时候只能匹配括号里的内容,没有括号【相当于最外层加一个括号】。在正则中,‘()’表示分组,括号表示分组。您只能匹配“()”中的内容。
四、re.findall中参数re.S的意义
1.该字符串变成(后跟另外两个B)
str=aabbab
aabbaa
bb
2.该参数没有re。s,最后一个换行符的aab不算。
print(re.findall(ra。*?b ,海峡))
#[aab , ab , aab]
3.参数是re。s,它不会中断\ n。
print(re.findall(ra。*?b ,str,re。s))
#[aab , ab , aab , aa\n b]
参考
正则表达式(。*?)和参数re。通过使用2.python re模块findall()来详细解释
3.3的findall()的详细解释。Python正则环模块
总结
关于re模块的findall()函数的Python正则表达式的详细讲解本文到此为止。关于re模块findall()的Python正则表达式的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。