zoukankan      html  css  js  c++  java
  • 06.正则表达式

    行定位符:

    ^ 行开始

    $ 行结尾

    元字符:

    限定符: 

     字符类:

    ^ 排除字符,如[^a-zA-Z]不是字母的字符

    | 选择字符,如(^d{15}$)|(^d{18}$)|(^d{17})(d|X|x)$,匹配15位数字,或18位数字,或17位数字最后一位是X或x或一个数字

    转义字符

    () 分组

    模式字符串前加r或R就是原生字符串

     print(r'1232')  # 1232

    re模块实现正则表达式:

    match()匹配:用于从字符串的开始处进行匹配,如果开始位置匹配成功,返回match对象,否则返回None

    re.match(pattern, string, flags)
    pattern:模式字符串
    string:要匹配的字符串
    flags:可选参数,标志位

        import re
    
        pattern = r'a_w+'
        m1 = re.match(pattern, 'A_vccc1212', re.I)  # 不区分大小写
        m2 = re.match(pattern, 'A_1212', re.I)  # 不区分大小写
        m3 = re.match(pattern, 'aA_vccc1212', re.I)  # 不区分大小写
        m4 = re.match(r'(a_d+)', 'A_122aa1212', re.I)  # 不区分大小写
        print(m1)  # <re.Match object; span=(0, 10), match='A_vccc1212'>
        print(m2)  # <re.Match object; span=(0, 6), match='A_1212'>
        print(m3)  # None
        # 匹配值的起始位置
        print(m1.start())  # 0
        # 匹配值的结束位置
        print(m1.end())  # 10
        # 匹配位置的元组
        print(m1.span())  # (0, 10)
        # 要匹配的字符串
        print(m1.string)  # A_vccc1212
        # 匹配数据
        print(m1.group())  # A_vccc1212
        print(m4.group())  # A_122
        print(m4.group(0))  # A_122
        print(m4.group(1))  # A_122
        # print(m4.group(2))#IndexError: no such group

    search()匹配:用于整个字符串搜索第一个匹配的值

    re.search(pattern, string, flags)
        pattern = r'a_w+'
        m1 = re.search(pattern, 'AvccaA_1212', re.I)  # 不区分大小写
        m2 = re.search(pattern, 'AvccaA1212', re.I)  # 不区分大小写
        print(m1)  # <re.Match object; span=(5, 11), match='A_1212'>
        print(m2)  # None

    findall()匹配:搜索整个字符串所有符合正则表达式的字符串,以列表的形式返回

    re.findall(pattern, string, flags)
        pattern = r'a_w+'
        m1 = re.findall(pattern, 'AvccaA_12a_12', re.I)  # 不区分大小写
        m2 = re.findall(pattern, 'AvccaA1212', re.I)  # 不区分大小写
        print(m1)  # ['A_12a_12']
        print(m2)  # []

    sub()替换:

        # re.sub(pattern, repl, string, count=0, flags=0)
        # pattern:模式字符串
        # repl:替换的字符串
        # string:要被查找替换的原始字符串
        # count:替换的最大次数
        # flags:标示位,如是否区分大小写
        patterm = r'(狗贼)|(傻子)'
        res = re.sub(patterm, '**', '你是狗贼')
        print(res)  # 你是**

    split()正则分割字符串:

    
    
        # re.split(pattern, string, maxsplit=0, flags=0)
        # pattern:模式字符串
        # string:要匹配的字符串
        # maxsplit:最大拆分次数
        # flags:标示位,如是否区分大小写
        pattern = r'[?|&]'
        res = re.split(pattern, 'login.jsp?name=aa&pwd=123')
        print(res)  # ['login.jsp', 'name=aa', 'pwd=123']
    推荐博客:
    """博客:https://blog.csdn.net/weixin_40907382/article/details/79654372"""
     
  • 相关阅读:
    JS中数字和字符相加相减问题
    学习JQGRID
    认识三层架构
    log4net.dll
    UML统一建模语言
    纳税服务系统【条件查询数据回显、分页】
    纳税服务系统【抽取BaseService、条件查询】
    Jquery总结图
    Hibernate逆向工程【PowerDesigner、idea环境下】
    纳税服务系统【信息发布管理、Ueditor、异步信息交互】
  • 原文地址:https://www.cnblogs.com/fly-book/p/11736626.html
Copyright © 2011-2022 走看看