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函数相关推荐

  1. python 正则表达式re 模块的使用

    python 正则表达式re 模块的使用 文章目录: 一.re模块介绍 1.re模块说明 2.官方文档给出的文档 3.别人总结的成表格中的内容 二.re模块使用介绍 1.常用函数源码 1.常用的函数介 ...

  2. python中re模块的span,详解Python正则表达式re模块

    正则是处理字符串最常用的方法,我们编码中到处可见正则的身影. 正则大同小异,python 中的正则跟其他语言相比略有差异: 1.替换字符串时,替换的字符串可以是一个函数 2.split 函数可以指定分 ...

  3. Python 正则表达式re模块的使用

    Python 正则表达式re模块的使用 基本上所有的编程语言都会有正则表达式,正则表达式是用来匹配一段字符串的表达式. 在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用内置模块re. ...

  4. 从列表、字符串、元组或集合中随机抽取指定个元素 Python中random模块的sample()函数

    选择题 以下python代码的输出结果不可能为? from random import sample s = ['a','b','c','d'] result = sample(s,3) print( ...

  5. python findall函数_Ramp;Python Data Science系列:数据处理(11)Python正则表达式re模块(三)...

    前言 使用正则表达式进行匹配,可以直接调用模块级函数,如match().search().findall()等,函数第一个参数是匹配的正则表达式,第二个参数则为要匹配的字符串.也可以使用re.comp ...

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

    findall 函数: 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表. 注意: match 和 search 是匹配一次 findall 匹配所有,mat ...

  7. python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单

    处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...

  8. Python正则表达式re模块简明笔记

    简介 正则表达式(regular expression)是可以匹配文本片段的模式.最简单的正则表达式就是普通字符串,可以匹配其自身.比如,正则表达式 'hello' 可以匹配字符串 'hello'. ...

  9. python正则表达式——re模块

    参考:python文档re --- 正则表达式操作 - Python 3.10.0 文档 目录 1.整体了解 2. 语法 3. re.match 4. re.search re.match与re.se ...

最新文章

  1. 分析方法升级三代测序辅助,优化无参转录组测序策略
  2. Sql Server 2008R2版本中有关外键Foreign的使用
  3. 从实际案例聊聊Java应用的GC优化--转
  4. 团队行为心理学读书笔记(3)领导力背后的行为心理学
  5. PaddleDetection支持的数据格式
  6. Linux DHCP Server 配置给FIT AP 使用的option
  7. 如何设置电脑开机自动提示(防止忘打卡等)
  8. python 读取、写入 pkl文件
  9. 米斯特白帽培训讲义 实战篇 南方 0day
  10. JS中比較2个字符串内元素的不同(字符1, 字符2, 分隔符可选)
  11. 机器学习面试- 推荐系统的常用算法
  12. 精选| 2019年5月R新包推荐(Top40)
  13. 32.Linux/Unix 系统编程手册(上) -- 线程:线程取消
  14. LuoguP2700逐个击破【并查集/生成树/正难则反】By cellur925
  15. 中兴笔试c语言,中兴面试C语言题1
  16. 前沿重器[22] | 聊聊对话系统:技术架构
  17. python添加pip环境变量win7_windows环境下面配置pip环境变量
  18. oracle_身份证有效性校验
  19. 【Nginx之轨迹】Nginx + Lua 实现 waf Web 应用防火墙(解决 nignx 加载失败问题:LuaJIT version which is not OpenResty‘s)
  20. EHub_tx1_tx2_E100 测试VisionWorks跑自带的demo

热门文章

  1. 弹性理念应用于城市公园景观设计中的重要性
  2. 过河问题matlab建模,过河问题-数学建模C++实现
  3. 什么是死锁,简述死锁发生的四个必要条件,如何避免与预防死锁
  4. open_output_file函数
  5. 程序员的mysql金典pdf_《程序员sql金典》pdf(完整)
  6. 东北农业大学第九届程序设计竞赛 题解
  7. 如何消除代码屎山中的一大坨参数列表?
  8. 天津市卓越软件实验班线上测试,天津卓越软件工程师试验班实施方案.pdf
  9. pycharm配置python环境
  10. Ubuntu下如何创建工作空间(详细)