zoukankan      html  css  js  c++  java
  • Python学习笔记模式匹配与正则表达式之贪心和非贪心匹配

     随笔记录方便自己和同路人查阅。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      在字符串‘HaHaHaHaHa’中,因为(Ha){3,5}可以匹配3个、4个或5个实例,你可能会想,为什么在前面花括号的列子中,

    Match对象的group()调用会返回‘HaHaHaHaHa’,而不是更短的可能结果,毕竟‘HaHaHa’和‘HaHaHaHaHa’也能够有效的匹配正则

    表达式(Ha){3,5}。

      Python的正则表达式默认是“贪心”的,这表示在有二意的情况下,它们会尽可能匹配最长的字符串。花括号的“非贪心”版本

    匹配尽可能最短的字符串,即在结束的花括号后跟着一个问号。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      1、贪心模式,示例代码:

    #! python 3
    # -*- coding:utf-8 -*-
    # Autor: Li Rong Yang
    import re#d导入re模块
    Regex = re.compile(r'(Ha){3,5}')#贪心模式正则表达式
    text = Regex.search('HaHaHaHaHa')#查找文本内容,返回贪心内容
    print(text.group())#打印匹配正则表达式的内容
    

      运行结果:

      根据结果可以看出,贪心模式匹配最长的字符串内容

      2、非贪心模式,示例代码

    #! python 3
    # -*- coding:utf-8 -*-
    # Autor: Li Rong Yang
    import re#d导入re模块
    Regex = re.compile(r'(Ha){3,5}?')#非贪心模式正则表达式
    text = Regex.search('HaHaHaHaHa')#查找文本内容,返回非贪心内容
    print(text.group())#打印匹配正则表达式的内容
    

      运行结果:

      根据结果可以看出,贪心模式匹配最短的字符串内容

  • 相关阅读:
    wpf 样式
    珠宝软件操作手册
    解决redis连接错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to...
    Jquery页面中添加键盘按键事件,如ESC事件
    .NET中ToString()的用法
    Springboot-shiro-redis实现登录认证和权限管理
    redis读书笔记
    mongoDB工具类以及测试类【java】
    自己的mongodb的CRUD封装
    这两天学的线程池归纳
  • 原文地址:https://www.cnblogs.com/lirongyang/p/9575157.html
Copyright © 2011-2022 走看看