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共享引用(多个变量引用)示例代码
Dec 04 Python
python在windows和linux下获得本机本地ip地址方法小结
Mar 20 Python
对python 矩阵转置transpose的实例讲解
Apr 17 Python
python3 property装饰器实现原理与用法示例
May 15 Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 Python
python文档字符串(函数使用说明)使用详解
Jul 30 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
Feb 29 Python
Python Django view 两种return的实现方式
Mar 16 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
python UDF 实现对csv批量md5加密操作
Jan 01 Python
Python多个MP4合成视频的实现方法
Jul 16 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 CURL获取cookies模拟登录的方法
2013/11/04 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
php表单提交实例讲解
2015/11/12 PHP
php处理复杂xml数据示例
2016/07/11 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
jQuery动画animate方法使用介绍
2013/05/06 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Python显示进度条的方法
2014/09/20 Python
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
python 不以科学计数法输出的方法
2018/07/16 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
python多线程并发及测试框架案例
2019/10/15 Python
python 导入数据及作图的实现
2019/12/03 Python
零基础学python应该从哪里入手
2020/08/11 Python
如何用Python徒手写线性回归
2021/01/25 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
CSS3弹性盒模型开发笔记(一)
2016/04/26 HTML / CSS
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
求网格中的黑点分布
2013/11/06 面试题
员工教育培训协议书
2014/09/27 职场文书
培训计划通知
2015/07/15 职场文书
银行柜员工作心得体会
2016/01/23 职场文书