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实现的多线程端口扫描工具分享
Jan 21 Python
python使用psutil模块获取系统状态
Aug 27 Python
python生成二维码的实例详解
Oct 29 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
python对象与json相互转换的方法
May 07 Python
使用apiDoc实现python接口文档编写
Nov 19 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
Python sep参数使用方法详解
Feb 12 Python
Python 如何实现访问者模式
Jul 28 Python
Python 解析xml文件的示例
Sep 29 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
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
PHP eval函数使用介绍
2013/12/08 PHP
php验证session无效的解决方法
2014/11/04 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
2020/03/11 Javascript
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
python实现数组插入新元素的方法
2015/05/22 Python
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
python中的&&及||的实现示例
2019/08/07 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
党风廉设责任书
2014/04/16 职场文书
主题实践活动总结
2014/05/08 职场文书
大学生见习报告总结
2014/11/04 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android