关于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服务器端收发请求的实现代码
Sep 29 Python
Python中获取网页状态码的两个方法
Nov 03 Python
python提取内容关键词的方法
Mar 16 Python
利用Python实现命令行版的火车票查看器
Aug 05 Python
Python实现一个转存纯真IP数据库的脚本分享
May 21 Python
python跳出双层for循环的解决方法
Jun 24 Python
深入学习python多线程与GIL
Aug 26 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
使用python检查yaml配置文件是否符合要求
Apr 09 Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 23 Python
如何利用python 读取配置文件
Jan 06 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结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
thinkPHP5实现数据库添加内容的方法
2017/10/25 PHP
PHP实现验证码校验功能
2017/11/16 PHP
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python 转义字符详细介绍
2017/03/21 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
医学专业自荐信
2014/06/14 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
活动经费申请报告
2015/05/15 职场文书
离婚起诉书范本
2015/05/18 职场文书
英雄儿女观后感
2015/06/09 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript
Vue如何清空对象
2022/03/03 Vue.js