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

  • 相关阅读:
    VS2010版快捷键
    Win7旗舰版中的IIS配置asp.net的运行环境
    实现软件自动在线升级的原理
    view_countInfo
    C#尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
    error: 40
    SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法
    继承实现圆柱体面积体积的计算
    圆柱模板价格计算器V1.0版本
    python3.7内置函数整理笔记
  • 原文地址:https://www.cnblogs.com/jinan1/p/10760864.html
Copyright © 2020-2023  润新知