• 查找函数对比:findall,search,match


    re.match函数

    re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

    函数语法

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

    函数参数说明:

    参数描述
    pattern 匹配的正则表达式
    string 要匹配的字符串。
    flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志

    匹配成功re.match方法返回一个匹配的对象,否则返回None。

    我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

    匹配对象方法描述
    group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
    groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

    re.search方法

    re.search 扫描整个字符串并返回第一个成功的匹配。

    函数语法:

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

    re.match与re.search的区别

    re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

    #!/usr/bin/python
    import re
     
    line = "Cats are smarter than dogs";
     
    matchObj = re.match( r'dogs', line, re.M|re.I)
    if matchObj:
       print "match --> matchObj.group() : ", matchObj.group()
    else:
       print "No match!!"
     
    matchObj = re.search( r'dogs', line, re.M|re.I)
    if matchObj:
       print "search --> searchObj.group() : ", matchObj.group()
    else:
       print "No match!!"

    以上实例运行结果如下:

    No match!!
    search --> searchObj.group() :  dogs

    findall

    在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

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

    flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:
    
    re.I 忽略大小写
    re.L 表示特殊字符集 w, W, , B, s, S 依赖于当前环境
    re.M 多行模式
    re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
    re.U 表示特殊字符集 w, W, , B, d, D, s, S 依赖于 Unicode 字符属性数据库
    re.X 为了增加可读性,忽略空格和 # 后面的注释



  • 相关阅读:
    循环逗号分割数组!
    只是想好好学习一下!
    html元素水平垂直居中
    闭包知识点--笔记
    20160314
    从零开始做运维-零
    Nginx 和 CodeIgniter
    安装PIL库
    init
    NutUI3 多端实践之路
  • 原文地址:https://www.cnblogs.com/Lunais/p/13757481.html
Copyright © 2020-2023  润新知