zoukankan      html  css  js  c++  java
  • python正则表达式--findall、finditer方法

    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')

  • 相关阅读:
    PostgreSQL中的partition-wise join
    Partition-wise join
    外观模式 门面模式 Facade 结构型 设计模式(十三)
    桥接模式 桥梁模式 bridge 结构型 设计模式(十二)
    组合模式 合成模式 COMPOSITE 结构型 设计模式(十一)
    创建型设计模式对比总结 设计模式(八)
    原型模式 prototype 创建型 设计模式(七)
    单例模式 创建型 设计模式(六)
    建造者模式 生成器模式 创建型 设计模式(五)
    抽象工厂模式 创建型 设计模式(四)
  • 原文地址:https://www.cnblogs.com/jinan1/p/10760864.html
Copyright © 2011-2022 走看看