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实时获取cmd的输出
Dec 13 Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
python爬虫正则表达式之处理换行符
Jun 08 Python
用Python shell简化开发
Aug 08 Python
基于Python打造账号共享浏览器功能
May 30 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
Python函数参数定义及传递方式解析
Jun 10 Python
使用python把xmind转换成excel测试用例的实现代码
Oct 12 Python
python海龟绘图之画国旗实例代码
Nov 11 Python
Django使用channels + websocket打造在线聊天室
May 20 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中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
浅谈js中的this问题
2017/08/31 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
教师研修随笔感言
2014/01/23 职场文书
2014年财政工作总结
2014/12/10 职场文书
学校食品安全责任书
2015/01/29 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
使用pytorch实现线性回归
2021/04/11 Python
Python Parser的用法
2021/05/12 Python
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL