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("未找到匹配项")
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值