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实现将内容分行输出
Nov 05 Python
Python操作Access数据库基本步骤分析
Sep 19 Python
Python生成随机数组的方法小结
Apr 15 Python
python修改list中所有元素类型的三种方法
Apr 09 Python
python 实现登录网页的操作方法
May 11 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
python实时监控logstash日志代码
Apr 27 Python
python+requests接口自动化框架的实现
Aug 31 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
10个实用的PHP代码片段
2011/09/02 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
php操作access数据库的方法详解
2017/02/22 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
WebStorm ES6 语法支持设置&babel使用及自动编译(详解)
2017/09/08 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
python实现360的字符显示界面
2014/02/21 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
pandas中的series数据类型详解
2019/07/06 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
缴纳养老保险的证明
2014/01/10 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
农村文化活动总结
2014/08/28 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
专家推荐信范文
2015/03/26 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
校运会班级霸气口号
2015/12/24 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
Python&Matlab实现灰狼优化算法的示例代码
2022/03/21 Python
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle