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遍历指定文件及文件夹的方法
May 09 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
Python实现购物车程序
Apr 16 Python
Python中return self的用法详解
Jul 27 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
Window环境下Scrapy开发环境搭建
Nov 18 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
Python 3 判断2个字典相同
Aug 06 Python
IronPython连接MySQL的方法步骤
Dec 27 Python
Python实现自动访问网页的例子
Feb 21 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 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 array_intersect()函数使用代码
2009/01/14 PHP
php下使用SimpleXML 处理XML 文件
2010/02/27 PHP
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
AngularJS语法详解
2015/01/23 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
学校门卫工作职责
2013/12/07 职场文书
巡警年度自我鉴定
2014/02/21 职场文书
优秀家长事迹材料
2014/05/17 职场文书
爱护花草树木的标语
2014/06/11 职场文书
政风行风评议整改方案
2014/09/15 职场文书
幼儿园感谢信
2015/01/21 职场文书
在职证明范本
2015/06/15 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle