python正则表达式re模块之findall函数
python正则表达式re模块之findall函数
- 1. re.findall函数介绍
- 2. findall函数捕获分组
- 3. re.findall中正则表达式(.*?)
- 4. re.findall中参数re.S的意义
1. re.findall函数介绍
findall()函数在re模块中的定义如下:
def findall(pattern, string, flags=0):"""Return a list of all non-overlapping matches in the string.If one or more capturing groups are present in the pattern, returna list of groups; this will be a list of tuples if the patternhas more than one group.Empty matches are included in the result."""return _compile(pattern, flags).findall(string)
它返回string中所有与pattern匹配的全部字符串,返回形式为列表,如果pattern中含有分组,返回分组的匹配结果。如果有pattern中有多个分组,则返回元组列表。
findall()函数的调用有两种表示形式,其实所有的python正则函数,都用这两种调用方式,详细可以参看博客:python正则表达式与re模块
import re
kk = re.compile(r'\d+')
kk.findall('one1two2three3four4')
#[1,2,3,4]#注意此处findall()的用法,可传两个参数;
kk = re.compile(r'\d+')
re.findall(kk,"one123")
#[1,2,3]
示例代码:
import restr = 'aabbabaabbaa'# 一个"."就是匹配除 \n (换行符)以外的任意一个字符
print(re.findall(r'a.b', str)) # ['aab', 'aab']# *前面的字符出现0次或以上
print(re.findall(r'a*b', str)) # ['aab', 'b', 'ab', 'aab', 'b']
输出结果:
['aab', 'aab']
['aab', 'b', 'ab', 'aab', 'b']
2. findall函数捕获分组
实际上这并不是python特有的,这是正则所特有的 , 任何一门高级语言使用正则都满足这个特点:有括号时只能匹配到括号中的内容,没有括号【相当于在最外层增加了一个括号】。在正则里面 “()” 代表的是分组的意思,一个括号代表一个分组,你只能匹配到 “()” 中的内容。
import restr = 'aabpythonbaregexa,aabpythonbacoola'#分组搜索
print(re.findall(r'a(.+?)a', str))
print(re.findall(r'a(.*?)a', str))
print(re.findall(r'b(.*?)b.*?a(.*?)a', str))
嵌套括号:
import restring="abcdefg acbdgef abcdgfe cadbgfe"#不带括号
regex=re.compile("((\w+)\s+\w+)")
print(regex.findall(string))
#输出:[('abcdefg acbdgef', 'abcdefg'), ('abcdgfe cadbgfe', 'abcdgfe')]regex1=re.compile("(\w+)\s+\w+")
print(regex1.findall(string))
#输出:['abcdefg', 'abcdgfe']regex2=re.compile("\w+\s+\w+")
print(regex2.findall(string))
#输出:['abcdefg acbdgef', 'abcdgfe cadbgfe']
3. re.findall中正则表达式(.*?)
import restr = 'aabpythonbaregexa,aabpythonbacoola'#分组搜索
# aa中间的字符出现一次以上
print(re.findall(r'a(.+?)a', str))
# aa中间的字符出现0次或者多次
print(re.findall(r'a(.*?)a', str))
# 多个分组捕获
print(re.findall(r'b(.*?)b.*?a(.*?)a', str))
输出结果:
['abpythonb', ',', 'bpythonb']
['', 'regex', '', 'cool']
[('python', 'regex'), ('python', 'cool')]
4. re.findall中参数re.S的意义
import re
str = '''aabbabaabbaabb''' # 后面多加了2个b# 参数无re.S,没有把最后一个换行的aab算进来
print(re.findall(r'a.*?b', str)) # ['aab', 'ab', 'aab']# re.S不会对\n进行中断
print(re.findall(r'a.*?b', str, re.S)) # ['aab', 'ab', 'aab', 'aa\n b']
输出结果:
['aab', 'ab', 'aab']
['aab', 'ab', 'aab', 'aa\n b']
Python 正则表达式re模块之findall()详解
python正则表达式re模块之findall函数相关推荐
- python 正则表达式re 模块的使用
python 正则表达式re 模块的使用 文章目录: 一.re模块介绍 1.re模块说明 2.官方文档给出的文档 3.别人总结的成表格中的内容 二.re模块使用介绍 1.常用函数源码 1.常用的函数介 ...
- python中re模块的span,详解Python正则表达式re模块
正则是处理字符串最常用的方法,我们编码中到处可见正则的身影. 正则大同小异,python 中的正则跟其他语言相比略有差异: 1.替换字符串时,替换的字符串可以是一个函数 2.split 函数可以指定分 ...
- Python 正则表达式re模块的使用
Python 正则表达式re模块的使用 基本上所有的编程语言都会有正则表达式,正则表达式是用来匹配一段字符串的表达式. 在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用内置模块re. ...
- 从列表、字符串、元组或集合中随机抽取指定个元素 Python中random模块的sample()函数
选择题 以下python代码的输出结果不可能为? from random import sample s = ['a','b','c','d'] result = sample(s,3) print( ...
- python findall函数_Ramp;Python Data Science系列:数据处理(11)Python正则表达式re模块(三)...
前言 使用正则表达式进行匹配,可以直接调用模块级函数,如match().search().findall()等,函数第一个参数是匹配的正则表达式,第二个参数则为要匹配的字符串.也可以使用re.comp ...
- 【Python教程】 re 模块中findall() 函数返回值展现方式的用法详解
findall 函数: 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表. 注意: match 和 search 是匹配一次 findall 匹配所有,mat ...
- python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单
处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...
- Python正则表达式re模块简明笔记
简介 正则表达式(regular expression)是可以匹配文本片段的模式.最简单的正则表达式就是普通字符串,可以匹配其自身.比如,正则表达式 'hello' 可以匹配字符串 'hello'. ...
- python正则表达式——re模块
参考:python文档re --- 正则表达式操作 - Python 3.10.0 文档 目录 1.整体了解 2. 语法 3. re.match 4. re.search re.match与re.se ...
最新文章
- 分析方法升级三代测序辅助,优化无参转录组测序策略
- Sql Server 2008R2版本中有关外键Foreign的使用
- 从实际案例聊聊Java应用的GC优化--转
- 团队行为心理学读书笔记(3)领导力背后的行为心理学
- PaddleDetection支持的数据格式
- Linux DHCP Server 配置给FIT AP 使用的option
- 如何设置电脑开机自动提示(防止忘打卡等)
- python 读取、写入 pkl文件
- 米斯特白帽培训讲义 实战篇 南方 0day
- JS中比較2个字符串内元素的不同(字符1, 字符2, 分隔符可选)
- 机器学习面试- 推荐系统的常用算法
- 精选| 2019年5月R新包推荐(Top40)
- 32.Linux/Unix 系统编程手册(上) -- 线程:线程取消
- LuoguP2700逐个击破【并查集/生成树/正难则反】By cellur925
- 中兴笔试c语言,中兴面试C语言题1
- 前沿重器[22] | 聊聊对话系统:技术架构
- python添加pip环境变量win7_windows环境下面配置pip环境变量
- oracle_身份证有效性校验
- 【Nginx之轨迹】Nginx + Lua 实现 waf Web 应用防火墙(解决 nignx 加载失败问题:LuaJIT version which is not OpenResty‘s)
- EHub_tx1_tx2_E100 测试VisionWorks跑自带的demo
热门文章
- 弹性理念应用于城市公园景观设计中的重要性
- 过河问题matlab建模,过河问题-数学建模C++实现
- 什么是死锁,简述死锁发生的四个必要条件,如何避免与预防死锁
- open_output_file函数
- 程序员的mysql金典pdf_《程序员sql金典》pdf(完整)
- 东北农业大学第九届程序设计竞赛 题解
- 如何消除代码屎山中的一大坨参数列表?
- 天津市卓越软件实验班线上测试,天津卓越软件工程师试验班实施方案.pdf
- pycharm配置python环境
- Ubuntu下如何创建工作空间(详细)