正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪则相反,总是尝试匹配尽可能少的字符。在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。
>>> s="This is a number 234-235-22-423"
>>> r=re.match(".+(\d+-\d+-\d+-\d+)",s)
>>> r.group(1)
'4-235-22-423'
>>> r=re.match(".+?(\d+-\d+-\d+-\d+)",s)
>>> r.group(1)
'234-235-22-423'
>>> 
正则表达式模式中使用到通配字,那它在从左到右的顺序求值时,会尽量“抓取”满足匹配最长字符串,在我们上面的例子里面,“.+”会从字符 串的启始处抓取满足模式的最长字符,其中包括我们想得到的第一个整型字段的中的大部分,“\d+”只需一位字符就可以匹配,所以它匹配了数字“4”,而“.+”则匹配了从字符串起始到这个第一位数字4之前的所有字符。
解决方式:非贪婪操作符“?”,这个操作符可以用在"*","+","?"的后面,要求正则匹配的越少越好。

python re的贪婪和非贪婪匹配相关推荐

  1. python 正则表达式 re (.*?)和(.*)的区别(贪婪模式非贪婪模式)惰性匹配

    贪婪模式 .* 非贪婪模式 .*? 1. .匹配任意除换行符"\n"外的字符: 2. *表示匹配前一个字符0次或无限次: 3. +或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*? ...

  2. python贪婪匹配_python re模块匹配贪婪和非贪婪模式详解

    python re模块匹配贪婪和非贪婪模式详解 这篇文章主要介绍了python re模块匹配贪婪和非贪婪模式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友 ...

  3. python基础(十二):正则、re模块、贪婪和非贪婪

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 元字符:在 ...

  4. Python正则表达式中的贪婪和非贪婪

    python贪婪和非贪婪 Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符: 非贪婪则相反,总是尝试匹配尽可能少的字符. 在"*",& ...

  5. Python中的贪婪和非贪婪

    Python贪婪和非贪婪 Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符: 非贪婪则相反,总是尝试匹配尽可能少的字符. 在"*",& ...

  6. PHP正则匹配效率,PHP 正则表达式效率 贪婪、非贪婪与回溯分析(推荐)

    先扫盲一下什么是正则表达式的贪婪,什么是非贪婪?或者说什么是匹配优先量词,什么是忽略优先量词? 好吧,我也不知道概念是什么,来举个例子吧. 某同学想过滤之间的内容,那是这么写正则以及程序的.$str ...

  7. java正则表达式非贪婪_正则表达式中的贪婪与非贪婪匹配模式

    1.首先看看下面的例子: try{ str=" abcdefg abcdefghijkl "; re1=str.match(/ [\W\w]+?/ig); alert(" ...

  8. java 正则 惰性匹配_正则表达式 - 贪婪与非贪婪(惰性)

    使用场景 有时,我们想用正则匹配以某个子串开头,且以某个子串或字符结尾的子字符串,但是结尾的字串或字符在原字符串中出现了多次,但我们只想匹配从开始处到第一次出现的地方,换句话说,想得到开始和结尾之间内 ...

  9. java正则表达式非贪婪_正则表达式的贪婪与非贪婪匹配

    1.什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc"; Patter p="ab.*c"; 贪婪匹配:正则表达式一般趋向于最大长度 ...

最新文章

  1. 【笔记】基于轻量和积网络及无人机遥感图像的大豆田杂草识别
  2. python openpyxl读写xlsx_python高阶教程-python操作xlsx文件(openpyxl)
  3. 基于Unity的弹幕游戏多人联机尝试
  4. mysql将时间轴转化为时间_MySQL日期计算及格式转换有关问题
  5. Android开发-Hello World+phonegap(Cordova)
  6. 8 一点就消失_消失的莉莉安(25)
  7. apktool d test.apk报错:Unsupported major.minor version 52.0
  8. 具体数学-第2课(成套方法求解递归式)
  9. vue el-input输入框禁止输入空格
  10. 如何查看当前计算机硬盘状态,win7系统下如何查看硬盘状态
  11. 如何写期刊论文的文献综述
  12. JSP报错 At least one JAR was scanned for TLDs yet contained no TLDs
  13. IEEE latex 编写lemma
  14. 记一次互联网寒冬下的阿里面试总结
  15. Linux下实现苹果AirPlay音频服务器
  16. DELL笔记本电源检测功率匹配、充不进电
  17. iOS Still Image Capture Using AVCaptureSession(使用AVCaptureSession获取静止Image)
  18. 分别使用BP/RBF/GRNN神经网络识别航迹异常matlab仿真
  19. Self-Driving Cars 专项课程-Safety for Self-Driving Cars
  20. 天数最少的年份_年月日天数计算方法

热门文章

  1. 3ds Max绘制一个漂亮的青花瓷碗3D模型
  2. 用于金融科技应用开发的高性能图表控件
  3. 创建Ceph文件系统
  4. GPS定位流程_(1)
  5. MySQL:引擎知识点盘点
  6. USACO - Chapter1 Section 1.1 - Broken Necklace
  7. 综合案例(09-小兔鲜项目)
  8. 计算机网络信息技术及发展趋势,从计算机网络技术的发展到信息技术的发展
  9. 使用编辑器编写文档时出现前字吞后字的解决方法
  10. ABAP 开发利用HANA特性