python中如何使用正则表达式的非贪婪模式示例


Posted in Python onOctober 09, 2017

前言

本文主要给大家介绍了关于python使用正则表达式的非贪婪模式的相关内容,分享出来供大家参考学习,下面话不多说了,来一起详细的介绍吧。

在正则表达式里,什么是正则表达式的贪婪与非贪婪匹配

如:String str="abcaxc";

Patter p="ab*c";

贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。

非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。

解决这个问题,可以采用: 

正则引擎默认是贪婪的,当出现"*"时,它会尽量去匹配尽可能长的字符串。

 一个用于修正以上问题的可能方案是用"*"的惰性代替贪婪性。你可以在"*"后面紧跟一个问号"?"来达到这一点 
这告诉正则引擎,尽可能少的重复上一个字符。

如下面的例子:

#python 3. 6 
#蔡军生 
#http://blog.csdn.net/caimouse/article/details/51749579 
# 
from re_test_patterns import test_patterns 
 
test_patterns( 
 'abbaabbba', 
 [('ab*?', 'a followed by zero or more b'), 
  ('ab+?', 'a followed by one or more b'), 
  ('ab??', 'a followed by zero or one b'), 
  ('ab{3}?', 'a followed by three b'), 
  ('ab{2,3}?', 'a followed by two to three b')], 
)

输出结果如下:

'ab*?' (a followed by zero or more b)


 'abbaabbba'
 'a'
 ...'a'
 ....'a'
 ........'a'


'ab+?' (a followed by one or more b)


 'abbaabbba'
 'ab'
 ....'ab'


'ab??' (a followed by zero or one b)


 'abbaabbba'
 'a'
 ...'a'
 ....'a'
 ........'a'


'ab{3}?' (a followed by three b)


 'abbaabbba'
 ....'abbb'


'ab{2,3}?' (a followed by two to three b)


 'abbaabbba'
 'abb'
 ....'abb'

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
跟老齐学Python之有容乃大的list(4)
Sep 28 Python
Python写的英文字符大小写转换代码示例
Mar 06 Python
python实现查询IP地址所在地
Mar 29 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
深入理解python try异常处理机制
Jun 01 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
python实现推箱子游戏
Mar 25 Python
python tkinter组件摆放方式详解
Sep 16 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
pycharm的python_stubs问题
Apr 08 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
详解python的super()的作用和原理
Oct 29 Python
Python 多进程和数据传递的理解
Oct 09 #Python
Python 加密的实例详解
Oct 09 #Python
Python 3实战爬虫之爬取京东图书的图片详解
Oct 09 #Python
Python3实战之爬虫抓取网易云音乐的热门评论
Oct 09 #Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 #Python
Python引用传值概念与用法实例小结
Oct 07 #Python
Python中执行存储过程及获取存储过程返回值的方法
Oct 07 #Python
You might like
简单解析PHP程序的运行流程
2016/06/23 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
JS实现上传图片实时预览功能
2017/05/22 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
10个经典的网页鼠标特效代码
2018/01/09 Javascript
小程序实现上下切换位置
2020/11/16 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
gearman的安装启动及python API使用实例
2014/07/08 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
python drf各类组件的用法和作用
2021/01/12 Python
C#面试常见问题
2013/02/25 面试题
数控专业个人求职信范文
2014/02/05 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
三方合作意向书范本
2015/05/09 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS