• python re findall search finditer complie 预加载


    python re findall search finditer complie 预加载

    几个主要的元数据,表示单个匹配
    \d #匹配数字
    \w #匹配字母,数字,下划线
    \D #/d的取反
    \W # /w的取反
    [abc] #其中的任意字符
    [^abc] #其中的任意字符取反
    . #所有内容,贪婪匹配,除了换行

    有前置数据,后置描述
    ? #0/1个

    •  #1个以上
      
      • 1
    •   #任意多个
      
      • 1

    {n} #n个

    特别说明:
    “.*?” #不贪婪匹配,一般是将需要匹配的内容用这个替换就可以获取到匹配的内容

    re.findall #返回的是列表
    re.search #返回match对象,且只匹配到第一个,后面就不匹配了
    re.finditer #返回一个可以迭代对象,迭代对象里面是match对象

    import re
    
    s = """
    要实现自动化数据库断言?其实很easy
    课程链接:https://ke.qq.com/webcourse/index.html#cid=315793&term_id=100374766&taid=7225051863441
    详细内容:
    1. selenium web自动化断言操作
    2. 批量获取并存储网页信息数据
    3. Java实现数据库连接与查询
    4. 数据库与web自动化结果对比断言
    """
    # result = re.findall("\d+",s)     #匹配连在一起的数字;返回匹配的,然后放入到列表中
    # result = re.search("\w+",s)      #匹配第一次匹配的字符,数字,下划线的多个,遇到特需符号完成,返回match对象,只有1个
    # result = re.finditer("\D+",s)     #匹配为可迭代对象,每一个值为一个match对象
    
    
    #如下为re的预加载功能,可以将上面的cid 和 term_id的值取出来
    obj = re.compile(r'ke.qq.com/webcourse/index.html#cid=(?P<cid>.*?)&term_id=(?P<term_id>.*?)&taid=7225051863441',)
    # result = obj.findall(s)                #返回列表,但是时匹配的元素放入到一个元组中,然后再放入到了列表
    
    # result = obj.search(s)                   #找到对应的命名的内容,并匹配 
    # cid = result.group("cid")
    # term_id =  result.group("term_id")
    # print(cid,term_id)
    
    result = obj.search(s)           #直接search到match的对象,直接用groupdict列出所有匹配的值
    dict = result.groupdict()
    print(dict)
    
    # result = obj.finditer(s)               #使用finditer需要将迭代对象列出来,然后用match对象;那我用这个finditer的作用是什么呢?每次都要解包才能用?
    # for i in result:
    #     dict = i.groupdict()
    #     print(dict)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    记录一次循环引用的问题
    Java基于SpringBoot+Vue的考研资讯平台
    知识提取-属性抽取-学习笔记
    【Linux进程通信】进程间通信介绍、匿名管道原理分析
    为 ASP.NET Core (6.0)服务应用添加ApiKey验证支持
    liteos启动流程
    小鹏汽车面试经验分享
    Android 13.0 屏蔽Launcher3桌面app图标的长按功能
    【Vue3】中ref如何获取dom元素,以element-plus中的走马灯next、prev方法为例
    用【mysql,vue,node】制作一个前后端分离小项目
  • 原文地址:https://blog.csdn.net/marc_chen/article/details/125607438