zoukankan      html  css  js  c++  java
  • Python全栈 正则表达式(re模块正则接口全方位详解)

    re模块是Python的标准库模块

    模块正则接口的整体模式

    re.compile 返回regetx对象

    finditer fullmatch match search 返回 match对象

    match.属性|方法

     

    re模块的使用:

        regex = re.compile(pattern,flags = 0)

            功能 : 

                生成正则表达式对象

            参数 : 

                pattern     正则表达式

                flags  功能标志位,丰富正则表达式的匹配

            返回值: 

                返回一个正则表达式对象

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

            功能 : 

                根据正则表达式匹配目标字串内容

            参数 : 

                pattern     正则表达式

                string      目标字符串

            返回值: 

                列表 里面是匹配到的内容

                如果正则表达式有子组,则只返回子组中的内容

        regex.findall(string,pos,endpos)

            功能 : 

                根据正则表达式匹配目标字串内容

            参数 :  

                string      目标字符串

                pos,endpos : 截取目标字符串的起止位置进行匹              配,默认是整个字符串

            返回值: 

                列表 里面是匹配到的内容

                如果正则表达式有子组,则只返回子组中的内容

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

            功能 : 

                通过正则表达式切割目标字符串

            参数 : 

                pattern     正则

                string      目标字串

            返回值 : 

                以列表形式返回切割后的内容

        re.sub(pattern,replace,string,max,flags)

            功能: 

                替换正则表达式匹配内容

            参数: 

                pattern     正则

                replace     要替换的内容

                string      目标字符串

                max         设定最多替换几处

            返回值 : 

                替换后的字符串

        re.subn(pattern,replace,string,max,flags)

            功能和参数同sub

            返回值多一个实际替换了几处

        re.finditer(pattern,string,flags)

            功能: 

                使用正则匹配目标字串

            参数:  

                pattern     正则

                string      目标字串

            返回值: 

                迭代对象 ----》 迭代内容为match对象

        re.fullmatch(pattern,string,flags)

            功能 : 

                完全匹配一个字符串

            参数:  

                pattern     正则

                string      目标字串

            返回值:

                match对象,匹配到的内容

        re.match(pattern,string,flags)

            功能 : 

                匹配一个字符串起始内容

            参数:  

                pattern     正则

                string      目标字串

            返回值:

                match对象,匹配到的内容

        re.search(pattern,string,flags)

            功能 : 

                匹配第一个符合条件的字符串

            参数:  

                pattern     正则

                string      目标字串

            返回值:

                match对象,匹配到的内容

        regex 对象的属性

            flags           标志位数值

            pattern         正则表达式

            groups          子组个数

            groupindex      获取捕获组字典,键为组名值是第几组

        match对象属性:

            match.string        表示目标字符串的开始位置

            match.pos           表示目标字符串的结束位置

            match.re            表示对象生成正则表达式

            match.endpos        目标字符串

            match.lastindex     最后一个分组是第几组

            match.lastgroup     最后一组的名称(捕获)

         match对象方法:

            match.span()        返回匹配到内容的开始结束位置元组

            match.start()       返回匹配到内容的开始位置

            match.end()         返回匹配到内容的结束位置

            match.groups()      返回所有子组匹配到的内容

            match.groupdict()   返回捕获组字典键:捕获名 值:内容

    group(n=0)

        功能:

            获取match对象对应的匹配内容

        参数:

            默认为0 表示获取整体的匹配内容

            如果赋值1,2,3。。。表示获取第n个子组匹配到的内容

        返回值:

            返回获取到的内容字串

     
    # regex1.py
    import re
    
    pattern = r"(?P<dog>ab)cd(?P<pig>ef)"
    # 生成正则表达式对象
    regex = re.compile(pattern)
    
    s = "abcdefghfkfdafsabcdefjsaavjhcabca"
    # 获取mtach对象
    obj = regex.search(s, 0, 8)  # 设置开始位置结束位置
    
    
    # print(len(s))
    
    
    # match对象属性
    print(obj.pos)  # 目标字符串的开始位置
    print(obj.endpos)  # 目标字符串的结束位置
    print(obj.re)  # 正则表达式对象  re.compile('(?P<dog>ab)cd(ef)')
    print(obj.string)  # 目标字符串
    print(obj.lastindex)  # 最后一个分组是第几组
    print(obj.lastgroup)  # 最后一组的名称
    
    
    # match对象方法
    print(obj.span())  # 匹配到内容的起止位置
    print(obj.start())  # 匹配到的内容开始位置
    print(obj.end())  # 匹配到的内容结束位置
    print(obj.groups())  # 所有子组匹配到的内容
    print(obj.groupdict())  # 捕获组字典 键:捕获名 值:内容
    
    
    print(obj.group())
    print(obj.group(2))
    # group(n=0)
    #     功能:
    #         获取match对象对应的匹配内容
    #     参数:
    #         默认为0 表示获取整体的匹配内容
    #         如果赋值1,2,3。。。表示获取第n个子组匹配到的内容
    #     返回值:
    #         返回获取到的内容字串

        flags参数:

            re.compile

            re.findall 

            re.search 

            re.match 

            re.finditer 

            re.fullmatch 

            re.split 

            re.sub

            作用:

                辅助正则表达式,扩展丰富的匹配内容、

                regex = re.compile(r"Hello", re.I)  # 忽略字母大小写

                I == IGNORECASE     忽略字母大小写

                S == DOTALL         让元字符 . 能够匹配到

                M == MULTILINE      让元字符 ^ $ 能够匹配每一行的开头和结尾

                X == VERBOOS        能够为正则添加注释

            flags传递多个参数时可以用 按位或: | 链接

    import re 
    
    # 忽略字母大小写
    regex = re.compile(r'hello',re.I)
    
    # l = regex.findall('hello Hello')
    # print(l)
    
    s = '''hello world
    nihao Beijing'''
    # 让.能够匹配换行符
    l = re.findall(r'.+',s,re.S)
    print(l)
    # 匹配每一行
    obj = re.search(r"world$",s,re.M)
    print(obj.group())
    
    # re自带注释方法
    pattern = r"""(?P<dog>w+)  #dog组
    s+   #匹配任意多个空格
    (W+)  #匹配一些特殊字符
    """
    
    
    #添加注释同时忽略大小写
    s = re.match(pattern,'hello  %#@',re.X | re.I).group()
    print(s)

     

  • 相关阅读:
    ✍08 docker安装问题
    axios跨域post请求中,后台把整个body对象当成了请求参数的键
    nginx运行vue项目,并对后端做负载均衡
    Linux安装nginx
    vue项目运行后无IP,本地网址显示为 http://[C:WindowsSystem32driversetc]:8080/
    Notion ---- 侧边栏目录插件
    工作笔记1-时间字段序列化
    web测试方法总结
    Hive构成及工作原理简介
    oracle 之表分区详解
  • 原文地址:https://www.cnblogs.com/ParisGabriel/p/9532376.html
Copyright © 2011-2022 走看看