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操作CouchDB的方法
Oct 08 Python
Python查找相似单词的方法
Mar 05 Python
在Python中使用__slots__方法的详细教程
Apr 28 Python
wxPython之解决闪烁的问题
Jan 15 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
Python判断对象是否相等及eq函数的讲解
Feb 25 Python
如何利用Python模拟GitHub登录详解
Jul 15 Python
如何基于python操作excel并获取内容
Dec 24 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 25 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
桌面中心(二)数据库写入
2006/10/09 PHP
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
php使用codebase生成随机数
2014/03/25 PHP
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
浅析python连接数据库的重要事项
2021/02/22 Python
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
EJB实例的生命周期
2016/10/28 面试题
保安的辞职报告怎么写
2014/01/20 职场文书
大学生优秀自荐信范文
2014/02/25 职场文书
搞笑征婚广告词
2014/03/17 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server
python如何查找列表中元素的位置
2022/05/30 Python