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 相关文章推荐
在树莓派2或树莓派B+上安装Python和OpenCV的教程
Mar 30 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
python下os模块强大的重命名方法renames详解
Mar 07 Python
Python实现希尔排序算法的原理与用法实例分析
Nov 23 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 Python
基于python cut和qcut的用法及区别详解
Nov 22 Python
python绘制无向图度分布曲线示例
Nov 22 Python
Python读取csv文件实例解析
Dec 30 Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 Python
django queryset相加和筛选教程
May 18 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
PHPMailer邮件发送的实现代码
2013/05/04 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
vue初尝试--项目结构(推荐)
2018/01/30 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
Python fileinput模块使用实例
2015/05/28 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Windows下python3.6.4安装教程
2018/07/31 Python
Python同步遍历多个列表的示例
2019/02/19 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
汽车销售顾问求职自荐信
2014/01/01 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
大学同学会活动方案
2014/08/20 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书