• python re模块


    正则表达式 本身具有处理字符串的能力
    如果 要处理的字符串 存在python 的内存里

    模块 ->操作正则表达式

    import re
    ret = re.findall("d+","sfsafasf3ww33)
    print(ret)
    一次性返回所有匹配到的项 直接存在列表中
    
    
    ret = re.search("d+","alfjalkjfalj3")
    print("d+","wegwere2")
    if ret:
        
        print(ret.group())
    
    一次性只匹配一个符合条件的表达式,以对象的形式返回,通过对象.group()取实际值
    如果没有匹配到 会返回none 调用group会报错


    ret = re.match('d+','adfafa8ada32')
    print(ret) #获取到的是对象
    match的好处是取值的时候有值则取值即可,无值则是None,用于判断方便些

    findall和分组的问题

    import re
    ret = re.findall("d+(?:.d+)?","1.234+4.3")
    ?:写在一个分组的最开始,表示在faidall方法中取消这个分分组的优先级
    print(ret)
    ret= re.search('d+(.d+)?','1.2345+4.3')
    print(ret.group)
    

    aa|bb.split("|")

    split中如果带有分组,会在分割的同时保留被分割内容中带分组的部分

    ret = re.split("(dd)","afafa34")
    print(ret)
    ret = re.sub("(dd)","afafa34",2)
    print(ret)
    ret = re.subn("(dd)","afafa34")
    print(ret)
    

     节省时间complie

    obj = re.complie("d{3}")将正则表达式编译成一个 正则表达式的对象规则要匹配的对象是三个
    print(obj)
    ret = obj.search('adafa123eeee') 正则节省时间表达式式对调用search,猜数为待匹配的字符串
    print(ret.group())
    

     迭代功能的 节省空间 finditer

    ret = re.finditer("d+","slfla123")
    print(ret)
    for i  in ret :
      print(i.group)
    

    # 基础查找 findall(分组优先显示) search match
    # 替换分割 split(分组保留) sub subn
    # 代码优化 compile finditer

    分组命名
    # html标签语言
    # html是一种代码
    # 对于浏览器来说 浏览器和代码之间有一种约定
    # 写在一个标识符之内的代码 可以有一种独立的格式
    # 标识符
    # <h1>sgjkagjgdjkf</h1> 

    给分组起名字?P<a>正则表达式,使用分组的名字(?P=a)

    # ret = re.search('<(?P<tag>w+?)>w+</(?P=tag)>',"<b>hello</b>")
    # print(ret.group())
    # print(ret.group('tag'))
    

      

    根据分组的索引使用分组 1,1是分组的索引值
    # ret = re.search(r'<(w+?)>w+</1>',"<b>hello</b>")
    # print(ret.group())
    # print(ret.group(1))
    
    # ret = re.search(r"<(w+)>w+</1>","<h1>hello</h1>")
    # ret.group(1)
    
    # ret = re.finditer(r'<(w+?)>w+</1>',"<b>hesakdfkhfkllo</b>")
    # for i in ret:
    #     print(i.group(1))
    #     print(i.group())
    

     问号的作用

    # ?
    # 量词惰性匹配取消分组优先分组命名
    
    # ret=re.findall(r"d+.d+|(d+)","1-2*(60+(-40.35/5)-(-4*3))")
    # while '' in ret:
    #     ret.remove('')
    # print(ret)
    

      

     

     

     

      

      

  • 相关阅读:
    shell脚本,批量创建10个系统帐号并设置密码为随机8位字符串。
    shell脚本,在指定目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件。
    shell脚本,按字母出现频率降序排序。
    django 上传图片、使用PIL制作缩略图并保存到sea的storage
    mongo数据库基本操作--python篇
    看懂sh脚本
    推荐系统实践--基于用户的协同过滤算法
    推荐系统实践--概述
    django “如何”系列10:如何管理静态文件
    django “如何”系列9:三合一:利用遗留的数据库、输出csv和输出pdf
  • 原文地址:https://www.cnblogs.com/lnrick/p/9309871.html
Copyright © 2020-2023  润新知