• re模块


    一、import re

    二、findall方法、search方法、match方法

    # findall
    # 返回所有满足匹配条件的结果,放在列表里,前面一个参数是正则,后面是待匹配字符串
    #findall示例
    ret=re.findall('[a-z]+','abnormol big %s please')
    print(ret)
    #返回 ['abnormol', 'big', 's', 'please']
    注意:#findall的分组优先
    #优先匹配分组里面的,如果正则中有(),就只匹配()里面的,不是''里的
    #?:取消分组优先
    ret11=re.findall('abc.(d|[a-z]).cn','abc.5.cn')
    print(ret11)
    #5
    ret12=re.findall('abc.(?:d|[a-z]).cn','abc.5.cn')
    print(ret12)
    #['abc.5.cn']
    # search
    # 从前往后,找到一个就返回,返回的是结果的对象
    # 需要.group才能获取结果,找不到就是返回None,调用group自然报错
    # match
    # 和search用法相同,也需要group。找不到报错,返回None.
    # 从头开始匹配,且必须从头开始,如果正则从头开始就匹配上,那就返回一个变量
    #search 示例
    ret2=re.search('[z]','abnormol big %s please')
    print(ret2)    #None
    if ret2:
        print(ret2.gruop)
    ret3=re.search('[ab]','abnormol big %s please')
    if ret3:
        print(ret3.group())
    注意:#search和match 都有的关于group和分组的应用
    1.根据顺序取分组
    ret10=re.search('^[1-9](d{14})(d{2}[0-9x])?$','520202199910100236')
    print(ret10.group())
    print(ret10.group(1))
    print(ret10.group(2))
    # 520202199910100236
    # 20202199910100 第一个括号括起来的分组,第二个括起来的分组
    # 236
     *****2.根据变量名取分组
    re=search('d(w)+','awi3df3f4g5')
    re=search('d(?P<name>w)+','adgtref23refs34trfd3')
    print(re.gruop('name'))

    三、split方法(切块)

    ret4=re.split('[ab]','abcd')
    print(ret4)
    #split:切片先按a分割得到''和'bcd',再按b分割得到''和‘cd' #['', '', 'cd'] 注意:#split的分组优先,如果正则有分组,就是保留切割字符 ret13=re.split('d+',"sad23es233s21sed") print(ret13) ret14=re.split('(d+)',"sad23es233s21sed") print(ret14) # ['sad', 'es', 's', 'sed'] # ['sad', '23', 'es', '233', 's', '21', 'sed']

    四、sub与subn方法

    ret5=re.sub('d','H','sre3454rfdxzrt4rfdcs2',1)
    #sub:将第一个数字替换成'H’,如果没有参数1就全部替换
    print(ret5)
    #sreH454rfdxzrt4rfdcs2
    ret6=re.subn('d','H','sre3454rfdxzrt4rfdcs2')
    #subn:将数字替换成'H’,并且返回替换了几次
    print(ret6)
    #('sreHHHHrfdxzrtHrfdcsH', 6)

    五、其他(compile与finditer)

    obj=re.compile('d[a-z]')
    #compile:将正则表达式编译成为一个正则表达式对象,规则要匹配的是数字加小写字母
    # 可以多次使用该正则
    ret7=obj.search('saedtg1a2b')
    ret8=obj.search('s366edm9tg1a2b')
    print(ret7.group())   #1a
    print(ret8.group())   #6e
    ret9=re.finditer('d','asdf32edf34fss3d')
    print(ret9)
    print(next(ret9).group())
    print(next(ret9).group())
    print([i.group()for i in ret9])   
    #finditer:结果作为迭代器迭代器中每一个元素都要使用.group才能拿到结果 print([i.group()for i in ret9]) # <callable_iterator object at 0x000002650C282240> 返回一个迭代器 # 3 # 2 # ['3', '4', '3'] # []
  • 相关阅读:
    C#中两个日期类型的变量如何进行比较
    Ajax基本原理讲解 (引用别人文章)
    Ajax程序设计入门
    ASP.NET中如何调用存储过程
    删除SAM文件真的能够消除XP系统管理员的密码吗?
    用XMLHttpRequest和struts实现AJAX(译)
    关于邮件系统域名(DNS)设置的小常识
    输出各种二进制流的格式
    WPF 3D编程介绍
    WPF 3D学习笔记
  • 原文地址:https://www.cnblogs.com/lowislucifer/p/11298987.html
Copyright © 2020-2023  润新知