关于Python正则表达式 findall函数问题详解


Posted in Python onMarch 22, 2018

在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候。下面看下re模块下的findall()函数和多个表达式元组相遇的时候会出现什么样的坑。

代码如下:

import re
str="a b c d"
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))

结果:

[('a b', 'a'), ('c d', 'c')]
['a', 'c']
['a b', 'c d']

可能结果有点意外,下面解释一下

第一个正则表达式中是带有2个括号的,我们可以看到其输出是一个list 中包含2个 tuple

第二个正则表达式中带有1个括号,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果。

第三个正则表达式中不带有括号,其输出的内容就是整个表达式所匹配到的内容。

结论:findall()返回的是括号所匹配到的结果(如regex1),多个括号就会返回多个括号分别匹配到的结果(如regex),如果没有括号就返回就返回整条语句所匹配到的结果(如regex2)。所以在提取数据的时候就需要注意这个坑。

实际上是由其并不是python特有的,这是 正则 所特有的 , 任何一门高级语言使用正则都满足这个特点:有括号时只能匹配到括号中的内容,没有括号【相当于在最外层增加了一个括号】。在正则里面 “()” 代表的是分组的意思,一个括号代表一个分组,你只能匹配到"()"中的内容

Python 相关文章推荐
python编程开发之类型转换convert实例分析
Nov 13 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
Jun 23 Python
Python中如何获取类属性的列表
Dec 26 Python
Python实现Event回调机制的方法
Feb 13 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
Python中Numpy ndarray的使用详解
May 24 Python
Python button选取本地图片并显示的实例
Jun 13 Python
Django时区详解
Jul 24 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 Python
python语言中有算法吗
Jun 16 Python
小结Python的反射机制
Sep 28 Python
numba提升python运行速度的实例方法
Jan 25 Python
Django自定义过滤器定义与用法示例
Mar 22 #Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 #Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 #Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 #Python
python实现将excel文件转化成CSV格式
Mar 22 #Python
python 对象和json互相转换方法
Mar 22 #Python
利用python将json数据转换为csv格式的方法
Mar 22 #Python
You might like
php堆排序(heapsort)练习
2013/11/13 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
JavaScript 学习笔记(六)
2009/12/31 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
在Python中使用HTML模版的教程
2015/04/29 Python
python中的代码编码格式转换问题
2015/06/10 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
python之生产者消费者模型实现详解
2019/07/27 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
python 实现线程之间的通信示例
2020/02/14 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
Python如何发送与接收大型数组
2020/08/07 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
三星印度官网:Samsung印度
2019/08/03 全球购物
经管应届生求职信
2013/11/17 职场文书
社区消防工作实施方案
2014/03/21 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
师德先进个人材料
2014/12/20 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书