首页 > 代码库 > python re模块findall()详解
python re模块findall()详解
今天写代码,在写到郑泽的时候遇到了一个坑,这个坑是re模块下的findall()函数。
下面我将结合代码,记录一下
import re string="abcdefg acbdgef abcdgfe cadbgfe" #带括号与不带括号的区别 #不带括号 regex=re.compile("((\w+)\s+\w+)") print(regex.findall(string)) #输出:[(‘abcdefg acbdgef‘, ‘abcdefg‘), (‘abcdgfe cadbgfe‘, ‘abcdgfe‘)] regex1=re.compile("(\w+)\s+\w+") print(regex1.findall(string)) #输出:[‘abcdefg‘, ‘abcdgfe‘] regex2=re.compile("\w+\s+\w+") print(regex2.findall(string)) #输出:[‘abcdefg acbdgef‘, ‘abcdgfe cadbgfe‘]
第一个 regex 中是带有2个括号的,我们可以看到其输出是一个list 中包含2个 tuple
第二个 regex 中带有1个括号,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果。
第三个 regex 中不带有括号,其输出的内容就是整个表达式所匹配到的内容。
结论:findall()返回的是括号所匹配到的结果(如regex1),多个括号就会返回多个括号分别匹配到的结果(如regex),如果没有括号就返回就返回整条语句所匹配到的结果(如regex2)。所以在提取数据的时候就需要注意这个坑。
python re模块findall()详解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。