Python re 模块findall() 函数返回值展现方式解析


Posted in Python onAugust 09, 2019

findall 函数:

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有,match 和 search 的区别也很大,可以自行网上查找!

这里主要需要讨论的是其返回值的展现方式,即findall函数根据正则表达式的不同所返回的结果包含的不同信息!

主要包含三种情况:

1. 当给出的正则表达式中带有多个括号时,列表的元素为多个字符串组成的tuple,tuple中字符串个数与括号对数相同,字符串内容与每个括号内的正则表达式相对应,并且排放顺序是按括号出现的顺序。

# 例子,正则表达式里分了两个组
import re
test = '2018年的下半年,9月份, 27日'
pattern = re.compile(r'(\d)+(年|月|日)')
res = pattern.findall(test)
print(res)
# 输出结果: [('8', '年'), ('9', '月'), ('7', '日')]

2. 当给出的正则表达式中带有一个括号时,列表的元素为字符串,此字符串的内容与括号中的正则表达式相对应(不是整个正则表达式的匹配内容)。

# 例子,正则表达式里有一个分组
import re
test = '2018年的下半年,9月份, 27日'
pattern = re.compile(r'\d+(年|月|日)')
res = pattern.findall(test)
print(res)
# 输出结果: ['年', '月', '日']

3. 当给出的正则表达式中不带括号时,列表的元素为字符串,此字符串为整个正则表达式匹配的内容。

# 例子,正则表达式里没有分组
import re
test = '2018年的下半年,9月份, 27日'
pattern = re.compile(r'\d{4}年|\d{1}月|\d{2}日')
res = pattern.findall(test)
print(res)
# 输出结果: ['2018年', '9月', '27日']

4. 同样是前面的 test 数据,要匹配出和3中同样的结果,可以这样写。

# 例子,输出和3中同样的结果
import re
test = '2018年的下半年,9月份, 27日'
pattern = re.compile(r'\d{1,4}(?:年|月|日)')
res = pattern.findall(test)
print(res)
# 输出结果: ['2018年', '9月', '27日']

此例子中的 (?:年|月|日) 不表示一个分组

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 域名分析工具实现代码
Jul 15 Python
使用Python抓取模板之家的CSS模板
Mar 16 Python
Python类属性与实例属性用法分析
May 09 Python
Python查询阿里巴巴关键字排名的方法
Jul 08 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
Django对数据库进行添加与更新的例子
Jul 12 Python
在TensorFlow中屏蔽warning的方式
Feb 04 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
Feb 29 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
python使用scapy模块实现ARP扫描的过程
Jan 21 Python
Django ORM 自定义 char 类型字段解析
Aug 09 #Python
解决使用export_graphviz可视化树报错的问题
Aug 09 #Python
Django中自定义admin Xadmin的实现代码
Aug 09 #Python
python输出决策树图形的例子
Aug 09 #Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 #Python
Django ORM 常用字段与不常用字段汇总
Aug 09 #Python
详解如何减少python内存的消耗
Aug 09 #Python
You might like
php在文件指定行中写入代码的方法
2012/05/23 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
2015/04/01 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
JavaScript 调试器简介
2009/02/21 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
Django返回json数据用法示例
2016/09/18 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
Python自省及反射原理实例详解
2020/07/06 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
幼儿教师暑期培训方案
2014/08/27 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python