关于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实现一个简单的项目监控
Mar 31 Python
整理Python最基本的操作字典的方法
Apr 24 Python
Python操作Excel之xlsx文件
Mar 24 Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 Python
python实现k-means聚类算法
Feb 23 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
Python中应该使用%还是format来格式化字符串
Sep 25 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
Dec 31 Python
常用的10个Python实用小技巧
Aug 10 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
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
女性时尚网购:Chic Me
2019/07/30 全球购物
工业设计专业推荐信
2013/10/29 职场文书
4s店机修工岗位职责
2013/12/20 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
运动员口号
2014/06/09 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
逃课检讨书
2015/01/26 职场文书
2015年大学生工作总结
2015/04/21 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
小学感恩主题班会
2015/08/12 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫