当前位置 博文首页 > python中re.findall函数实例用法

    python中re.findall函数实例用法

    作者:小妮浅浅 时间:2021-09-15 17:43

    1、findall函数返回字符串中所有匹配结果的正则表达式列表。

    2、如果没有分组的正则是返回的正则匹配,分组返回的是分组匹配而非整个正则匹配。

    实例

    找到所有与pattern匹配的子串(不重叠),并将其放入列表。

    import re
    lst = re.findall("[1-9]\d*","qw21313h1o58p4kjh8123jkh8435u")
    for x in lst:
        print(x,end=" ")
    

    #输出结果:21313 1 58 4 8123 8435

    实例扩展:

    python3中函数说明:

    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, return
        a list of groups; this will be a list of tuples if the pattern
        has more than one group.
    
        Empty matches are included in the result.
    

    两种形式的使用方法:

    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 re
    
    string="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']
    
    jsjbwy