python 正则 findall(Python正则表达式findall函数详解)
导读:在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候。下面看下re模块下的findall( 函数和多个表达式元组相遇的时候会出现什么样的坑。...
在写正则表达式的时候总会遇到不少的问题 , 特别是在表达式有多个元组的时候 。下面看下re模块下的findall()函数和多个表达式元组相遇的时候会出现什么样的坑 。
代码如下
importre str="abcd" regex0=re.compile("((\w+)\s+\w+)") print(regex0.findall(str)) regex1=re.compile("(\w+)\s+\w+") print(regex1.findall(str)) regex2=re.compile("\w+\s+\w+") print(regex2.findall(str))输出结果
[(ab,a),(cd,c)] [a,c] [ab,cd]可能结果有点意外 ,下面解释一下
第一个正则表达式中是带有2个括号的 ,我们可以看到其输出是一个list 中包含2个 tuple
第二个正则表达式中带有1个括号 ,其输出的内容就是括号匹配到的内容 ,而不是整个表达式所匹配到的结果 。
第三个正则表达式中不带有括号,其输出的内容就是整个表达式所匹配到的内容 。
结论:findall()返回的是括号所匹配到的结果(如regex1) ,多个括号就会返回多个括号分别匹配到的结果(如regex) ,如果没有括号就返回就返回整条语句所匹配到的结果(如regex2) 。所以在提取数据的时候就需要注意这个坑 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!