findall方法

相比其他方法,findall方法有些特殊。它的作用是查找字符串中所有能匹配的字符串,并以结果存于列表中,然后返回该列表

注意: match 和 search 是匹配一次 findall 匹配所有。

1 pattern.findall方法

该方法的作用是在string[pos, endpos]区间从pos下标处开始查找所有满足pattern的子串, 直到endpos位置结束,并以列表的形式返回查找的结果,如果未找到则返回一个空列表。

语法格式:

pattern.findall(string[, pos[, endpos]])

2 re.findall

获取字符串中所有能匹配的字符串,并以列表的形式返回。

语法格式:

re.findall(pattern, string, flags=0)

3 当pattern有括号(分组)时,列表中的字符串只是圆括号中的内容,不是整个正则表达式所匹配的内容

  (1)当正则表达式中含有多个圆括号()时

  返回列表中的元素由所有满足匹配的内容组成,但是每个元素都是由表达式中所有圆括号匹配的内容组成的元组

  >>> re.findall(r'a(b)(c)','abcabc')

  [('b', 'c'), ('b', 'c')]

  (2)当正则表达式中只带有一个圆括号时

  返回的列表的元素由所有能成功匹配表达式中圆括

  号匹配的内容组成,并且该列表中的元素都是字符串

  >>> re.findall(r'a(b)c','abcabc')

  ['b', 'b']

  (3)当正则表达式中没有圆括号时

  返回列表中的元素由所有能成功匹配的子串组成。

  >>> re.findall(r'abc','abcabc')

  ['abc', 'abc']

finditer方法

finditer函数跟findall函数类似,但返回的是一个迭代器, 而不是一个像findall函数那样的存有所有结果的list。

finditer的每一个对象可以使用group(可以获取整个匹配串)和groups方法;

在有分组的情况下,findall只能获得分组,不能获得整个匹配串。

>>> re.findall(r'a(b)(c)','abcd 12abcde')

[('b', 'c'), ('b', 'c')]

>>> a = re.finditer(r'a(b)(c)','abcd 12abcde')

>>> for i in a :

... print i.group()

...

abc

abc

>>> a = re.finditer(r'a(b)(c)','abcd 12abcde')

>>> for i in a:

... print i.groups()

...

('b', 'c')

('b', 'c')

python正则表达式(5)--findall、finditer方法的更多相关文章

  1. python 基础 8.4 re的 spilt() findall() finditer() 方法

      #/usr/bin/python #coding=utf-8 #@Time   :2017/11/18 18:24 #@Auther :liuzhenchuan #@File   :re的spli ...

  2. Python正则表达式re.findall("[A-Za-z]([A-Za-z0-9])*[.]txt",'Abc2019.txt')的结果为什么是['9']

    在<Python妙用re.sub分析正则表达式匹配过程>中老猿分析了findall函数的返回情况,老猿前一阵子在执行这个语句时: >>> re.findall(" ...

  3. python正则表达式之re模块方法介绍

    python正则表达式之re模块其他方法 1:search(pattern,string,flags=0) 在一个字符串中查找匹配 2:findall(pattern,string,flags=0) ...

  4. python 正则表达式 re.findall &re.finditer

    语法: findall 搜索string,以列表形式返回全部能匹配的子串 re.findall(pattern, string[, flags]) finditer 搜索string,返回一个顺序访问 ...

  5. Python正则表达式re.findall一个有趣的现象

    下面通过几个案例来分析一下, 注意:本节的parsematch函数请参考<妙用re.sub分析正则表达式解析匹配过程> 案例一: >>> re.findall(r&quo ...

  6. python正则表达式02--findall()和search()方法区别,group()方法

    import re st = 'asxxixxsaefxxlovexxsdwdxxyouxxde' #search()和 findall()的区别 a = re.search('xx(.*?)xxsa ...

  7. Python正则表达式之findall疑点

    在findall中使用()进行分组时,得出的结果会优先提取分组的,比如下面这个例子 In [46]: re.findall(r"www.(baidu|163).com", &quo ...

  8. 正则表达式 re.findall 用法

    正则 re.findall 的简单用法(返回string中所有与pattern相匹配的全部字串,返回形式为数组)语法: findall(pattern, string, flags=0) import ...

  9. 第11.26节 Python正则表达式运算符优先级

    正则表达式从左到右进行计算,并遵循优先级顺序,相关运算符的优先级顺序按下表从高到低排列. 例如:字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或 ...

随机推荐

  1. Java选择结构和循环结构

    1.选择结构 ①.ifif(){ } if(){}else{} if(){}else if(){}else if(){}else{} ②.switch switch (表达式) { case 常量 1 ...

  2. Spring通过注解获取所有被注解标注的Beans

    Spring提供的方法:Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> annot ...

  3. 所谓的SaaS服务到底是什么?

    先从SaaS说起,SaaS是英文Soft as a Service(软件即服务)的简写.SaaS并不是指代一个行业或者一种技术,它是一种2B的专业型软件租赁使用模式. 什么是专业型软件? 就是为了解决 ...

  4. Java学习:递归

    递归的思想 以此类推是递归的基本思想. 具体来讲就是把规模大的问题转化为规模小的相似的子问题来解决.在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情 ...

  5. Angular复习笔记7-路由(下)

    Angular复习笔记7-路由(下) 这是angular路由的第二篇,也是最后一篇.继续上一章的内容 路由跳转 Web应用中的页面跳转,指的是应用响应某个事件,从一个页面跳转到另一个页面的行为.对于使 ...

  6. spring框架学习(一)——IOC/DI

    什么是Spring框架: Spring是一个基于IOC和AOP的结构J2EE系统的框架: IOC 反转控制 是Spring的基础,Inversion Of Control,简单说就是创建对象由以前的程 ...

  7. CentOS7下载配置PostgreSQL的pgAgent运行代理作业

    1.安装PostgreSQL 参考官方文档https://www.postgresql.org/download/linux/redhat/,运行如下命令 yum install https://do ...

  8. js 递归遍历对象 插入属性 遍历树结构

    // 向 info下面 每一项 插入 isShow test() { const _this = this; _this.info.isShow = false; let iteration = fu ...

  9. vue组件5 组件和v-for指令

    使用v-for遍历一个数组的时候,并且给定的数组变化时vue不会重复生成所有的元素,而是智能的找到需要更改的元素,并只改变这些元素 key属性可以告诉vue数组中的每个元素都应该与页面上的哪个元素相关 ...

  10. 链表(Linked List)

    链表(Linked List) 一.介绍 链表是有序的列表,它在内存中存储方式(物理存储)如下: 小结: (1)链表是以节点的方式来存储,是链式存储. (2)每个节点包含 data 域:存储数据:ne ...