【Python教程】 re 模块中findall() 函数返回值展现方式的用法详解

摘要:
这里主要需要讨论的是其返回值的展现方式,即findall函数根据正则表达式的不同所返回的结果包含的不同信息!'''importretest='2018年的下半年,9月份,27日'pattern=re.compileres=pattern.findallprint#输出结果:['年','月','日']3.当给出的正则表达式中不带括号时,列表的元素为字符串,此字符串为整个正则表达式匹配的内容。:年|月|日)')res=pattern.findallprint#输出结果:['2018年','9月','27日']此例子中的(?

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

例子,正则表达式里有一个分组

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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教程】 re 模块中findall() 函数返回值展现方式的用法详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux中apt-get使用Linux find查找指定文件 按照名称 然后cp拷贝到指定目录且指定文件名下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sqlite3 on python for newbies

python 集成了 sqlite3 ,其接口很简单: import sqlite3 db_connection = sqlite3.connect(db_filename) db_cursor = db_connection.cursor() db_cursor.execute('select * from tt') result_one = db_cu...

第三方库requests详解

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Pytho...

委托和多线程(一)

         定义:委托是一个类型安全的对象,它指向程序中另一个以后会被调用的方法(或多个方法)。通俗的说,委托是一个可以引用方法的对象,当创建一个委托,也就创建一个引用方法的对象,进而就可以调用那个方法,即委托可以调用它所指的方法。 委托的试用步骤: 1、定义委托:权限修饰符   delegate   返回值     委托名 (参数); 2、声明委托...

Python源代码安全审计工具之Bandit

Bandit是一种旨在查找Python代码中常见安全问题的工具。 它处理每个文件 从中构建AST 然后针对AST节点运行适当的插件。 当它扫描完成所有文件之后将生成报告。 以下安装部署过程基于Windows操作系统,假设已经安装并设置好了以下软件。 "Python 3.7.8 AMD64" "64-bit Git for Windows" 最便捷的安装方式...

Python学习————包

一 包介绍 例: pool/ #顶级包 ├── __init__.py ├── futures #子包 │ ├── __init__.py │ ├── process.py │ └── thread.py └── versions.py #子模块 强调: 1. 在python...

python 3.6 链接mssql 进行数据操作

#!/usr/bin/env python # -*- coding: UTF-8 -*- import pymssql class MSSQL(object): ''' 对pymssql的简单封装 pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonl...