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之使用Python操作数据库(1)
Nov 25 Python
Python中Django发送带图片和附件的邮件
Mar 31 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
Python设置在shell脚本中自动补全功能的方法
Jun 25 Python
python random从集合中随机选择元素的方法
Jan 23 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
Python os模块常用方法和属性总结
Feb 20 Python
python归并排序算法过程实例讲解
Nov 04 Python
python 实现学生信息管理系统的示例
Nov 28 Python
Python实现简单的猜单词
Jun 15 Python
如何理解python接口自动化之logging日志模块
Jun 15 Python
Python中re模块的元字符使用小结
Apr 07 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
桌面中心(二)数据库写入
2006/10/09 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
JavaScript中的其他对象
2008/01/16 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
基于python实现删除指定文件类型
2020/07/21 Python
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
预备党员转正思想汇报
2014/01/12 职场文书
标准化管理实施方案
2014/02/25 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
高三霸气励志标语
2014/06/24 职场文书
社会发展项目建议书
2014/08/25 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
三严三实学习心得体会
2014/10/13 职场文书
基层工作经验证明样本
2014/11/16 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang
redis protocol通信协议及使用详解
2022/07/15 Redis