当前位置: 首页 > article >正文

python正则表示式学习笔记(一)

今日遇到的问题

  • r'(user:|assistant:)(.*?)(?=user:|assistant:|$)'
    • (.*?)
      • 这是一个非贪婪匹配的分组,用于匹配发言者之后的文本内容,直到遇到下一个发言者或者达到字符串结尾
    • .*?
      • .表示匹配任意字符(除了换行符)
      • *表示匹配前面的任意字符零次或多次
      • ?使匹配变为非贪婪模式,即尽可能少地匹配字符,直到遇到下一个发言者标识或字符串结束
    • (?=user:|assistant:|$)
      • 这是一个正向前瞻断言,用于确保在匹配到发言者内容之后,下一个字符序列应该是"user:"或"assistant:"或者字符串结尾$
      • 正向前瞻不会消耗字符,只是进行检查。也就是说,它不会将匹配到的内容包含在最终的匹配结果中,但它会影响匹配的成功与否。
      • 这个前瞻断言确保了提取的内容是当前发言者的发言,而不是跨越发言者
  • 非贪婪匹配是指最短满足目标正则表达式的字符串
  • 贪婪匹配是指最长满足目标正则表达式的字符串
  • 正向前瞻断言的语法是(?=...),其中...是你想要匹配的模式(即正则表达式)
  • re.findall用于查找所有匹配正则表达式的子串,并返回一个包含所有匹配项的列表。如果正则表达式中有多个捕获组(即使用括号分组),则返回的列表中每个元素将是一个包含捕获组内容的元组。
  • re.search则用于查找字符串中第一次匹配正则表达式的位置,并返回一个匹配对象。如果没有找到匹配,则返回None。这个对象包含了匹配的详细信息,比如匹配的开始和结束位置,以及匹配的文本内容。如果需要获取整个匹配的内容,可以使用match.group()方法。
    import re
    
    text = "Hello, my email is example@example.com"
    pattern = r'(\w+@\w+\.\w+)'
    
    match = re.search(pattern, text)
    
    if match:
        print("找到匹配项:", match.group()) 
        print("开始位置:", match.start())
        print("结束位置:",match.end())
    else:
        print("未找到匹配项")
    

http://www.kler.cn/a/542357.html

相关文章:

  • 【SVN基础】
  • LabVIEW在呼吸机测试气体容量计算
  • 【详细版】DETR系列之Deformable DETR(2021 ICLR)
  • 【STM32】ADC
  • 线程池里面的execute 和 submit 方法有什么区别?
  • 哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测
  • 【Elasticsearch】Bucket Count K-S Test 聚合
  • 详解状态模式
  • 每日学习 Spring Aop源码分析 具体是如何创建Aop代理的
  • 简要介绍C++的“类(Class)”
  • 快速部署 DeepSeek R1 模型
  • 网络工程师 (29)CSMA/CD协议
  • 如何在 Elasticsearch 中设置向量搜索 - 第二部分
  • 设计模式-结构型-外观模式
  • 【Elasticsearch】监控与管理:集群监控指标
  • http 与 https 的区别?
  • 使用MyBatisMyBatis Plus实现SQL日志打印与执行监控
  • 23种设计模式的定义和应用场景-02-结构型模式-C#代码
  • 青少年编程与数学 02-009 Django 5 Web 编程 05课题、数据库与ORM
  • PG高可用学习@2
  • 大模型基本原理(二)——ChatGPT的工作原理
  • BUU35 [DASCTF X GFCTF 2024|四月开启第一局]EasySignin 100 【gopher打mysql】
  • 飞牛 使用docker部署MoviePilot V2自动化影视管理平台教程
  • 剪辑如何剪辑制作视频短视频剪辑学习怎么学,难吗?
  • 安川伺服控制器MP系列优势特点及行业应用
  • Oracle入门精读03_Oracle11g安装目录及子目录的结构简介