python正则表达式贪婪匹配_python 的正则表达式 贪婪模式与懒惰模式

正则表达式中用于表示匹配数量的元字符如下:

?   重复0次或1次,等同于{0,1}

*  重复0次或更多次,等同于{0,}

+  重复1次或更多次,等同于{1,}

{n,} 重复n次及以上

上面的表示匹配次数的元字符分为贪婪型和懒惰型2种类型。其表达式分别如下。

贪婪型      懒惰型

*     *?

+     +?

{n,}     {n,}?

贪婪型的匹配会去抓取满足匹配的最长的字符串,这个也是正则表达式的默认的模式。当我们不需要最长的匹配的时候就需要使用懒惰模式。

关于贪婪型和懒惰型的举例如下:

元字符'*'的贪婪模式 '*?'

>>> s="abcbd"

>>> patt=r'a.*b' #*的贪婪类型

>>> re.search(patt,s).group()

'abcb'

>>> patt=r'a.*?b' #*的懒惰类型

>>> re.search(patt,s).group()

'ab'

>>> s='caaaaab'

>>> patt=r'a.+b' #+的贪婪类型

>>> s='caaaaabcccb'

>>> re.search(patt,s).group()

>>> patt=r'a.+?b' #+的懒惰类型

>>> re.search(patt,s).group()

'aaaaab'

下面举例匹配html的例子,假如要匹配标签

和之间的内容:

>>> s=r'my string is:

QQemailNot read email'

>>> patt=r'

.*'

>>> print re.search(patt,s).group()

QQemailNot read email #贪婪类型,匹配多了

>>> patt=r'

.*?'

>>> print re.search(patt,s).group()

QQemail #懒惰类型,匹配刚好

>>> print re.findall(patt,s)

['

QQemail', 'Not read email']

python 正则表达式 贪婪模式的简介和匹配时的几种模式

看到一篇文章,关于python正则的,http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 贪婪模式与非贪婪模式: 正则表达式通常用于 ...

[\s\S]*?懒惰模式特殊情形

通常理解[\s\S]*?X (X代表任意指定字符) 表示匹配任何字符的懒惰模式,一旦遇到后面出现的X便停止匹配,但实际不是如此,会尽可能的把后面的内容也匹配进去.如: 表达式

PowerShell正则表达式(一) 定义模式

PowerShell正则表达式(一) 定义模式 7 29 9月, 2013  在 Powershell tagged 正则表达式 by Mooser Lee 本文索引 [隐藏] 1限定符 2识别IP地 ...

python使用rabbitMQ介绍五(话题模式)

一.模式介绍 话题模式(Topic)基本思想和路由模式是一样的,只不过路由键支持模糊匹配,符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词 话题模式相当于消息的模糊匹配,或者按照正则匹配.其中 ...

Python的命令模式和交互模式

Python的命令行模式和交互模式 请注意区分命令行模式和Python交互模式. 在命令行模式下,可以执行python进入Python交互式环境,也可以执行python first.py运行一个.py ...

python shell的交互模式和文本编辑模式

之前学python的时候,是拿练习的. 书里面基本都是以.py文件去写代码,也就是文本编辑模式. 而交互模式(也就是powershell),唯有在input用户输入 ...

python 3 廖雪峰博客笔记(三) 命令行模式与交互模式

python 的代码一般保存为 .py结尾的文本文件格式 比如 add.py 里写下如下内容 100 + 200 执行 add.py有两种方式: 1. 命令行方式:将python代码写入脚本中执行 p ...

简介Python设计模式中的代理模式与模板方法模式编程

简介Python设计模式中的代理模式与模板方法模式编程 这篇文章主要介绍了Python设计模式中的代理模式与模板方法模式编程,文中举了两个简单的代码片段来说明,需要的朋友可以参考下 代理模式 Prox ...

Python使用设计模式中的责任链模式与迭代器模式的示例

Python使用设计模式中的责任链模式与迭代器模式的示例 这篇文章主要介绍了Python使用设计模式中的责任链模式与迭代器模式的示例,责任链模式与迭代器模式都可以被看作为行为型的设计模式,需要的朋友可 ...

随机推荐

Orcale 数据库客户端PL/SQL中文乱码的问题

http://jingyan.baidu.com/article/948f59242aa519d80ef5f96e.html

Javascript中的链表

function LinkedList() { // 辅助类,表示加入链表的每一项 var Node=function(element){ this.element=element; this.nex ...

C++程序设计(关于函数中数组传递的一点心得)

题目: 10个学生考完期末考试评卷完成后,老师需要划出及格线,要求如下: (1) 及格线是10的倍数: (2) 保证至少有60%的学生及格: (3) 如果所有的学生都高于60分,则及格线为60分:   ...

C#算法之判断一个字符串是否是对称字符串

记得曾经一次面试时,面试官给我电脑,让我现场写个算法,判断一个字符串是不是对称字符串.我当时用了几分钟写了一个很简单的代码. 这里说的对称字符串是指字符串的左边和右边字符顺序相反,如"abb ...

POJ 2386 Lake Counting(深搜)

Lake Counting Time Limit: 1000MS     Memory Limit: 65536K Total Submissions: 17917     Accepted: 906 ...

USB枚举过程(2)

用bus hound 得到的数据 GET MAX LUN 命令 详见USB_MSC_BlukOnly_v1.0 接下来用到的是UFI  SCSI

Java学习日记-2.3 基本数据类型和对象所占内存空间大小

转自:http://www.newsmth.net/nForum/#!article/Java/324167

Flask学习记录之Flask-SQLAlchemy

Flask-SQLAlchemy库让flask更方便的使用SQLALchemy,是一个强大的关系形数据库框架,既可以使用orm方式操作数据库,也可以使用原始的SQL命令. Flask-Migrate ...

.Net 第三方工具包整理

抓取数据 Jumony (http://www.jumony.net/)是一个基于 .NET 技术,用 C# 编写的一个 HTML 引擎,其可以用来分析解读 HTML 文档中的数据,也可以修改和绑定数 ...

利用jink的驱动软件j-flash 合并两个hex的方法,bootloader+app

由于前几天要给工厂app和bootloader的hex的文件,网上很多都是bin的合并方法,bin的方法不再赘述,相信大家都能找到,现在将hex合并的方法写下来: 第一步:先打开第一个hex文件, 第 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值