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的类实例属性访问规则探讨
Jan 30 Python
python实现定时同步本机与北京时间的方法
Mar 24 Python
python获取当前日期和时间的方法
Apr 30 Python
python套接字流重定向实例汇总
Mar 03 Python
详解Python中的__getitem__方法与slice对象的切片操作
Jun 27 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
Feb 01 Python
Python 实现自动导入缺失的库
Oct 29 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
jupyter notebook读取/导出文件/图片实例
Apr 16 Python
利用Python多线程实现图片下载器
Mar 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
PHP中读写文件实现代码
2011/10/20 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
php实现异步数据调用的方法
2015/12/24 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
php中__toString()方法用法示例
2016/12/07 PHP
索趣科技的答案
2007/02/07 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
JQuery 弹出框定位实现方法
2010/12/02 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
使用Python抓取模板之家的CSS模板
2015/03/16 Python
详谈python http长连接客户端
2017/06/12 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
PyQt5组件读取参数的实例
2019/06/25 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
Pytorch释放显存占用方式
2020/01/13 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
计算机学生的自我评价分享
2014/02/18 职场文书
施工员岗位职责范本
2015/04/11 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python