Python正则表达式非贪婪、多行匹配功能示例


Posted in Python onAugust 08, 2017

本文实例讲述了Python正则表达式非贪婪、多行匹配功能。分享给大家供大家参考,具体如下:

一些regular的tips:

1 非贪婪flag

>>> re.findall(r"a(\d+?)","a23b") # 非贪婪模式
    ['2']
>>> re.findall(r"a(\d+)","a23b")
    ['23']

注意比较这种情况:

>>> re.findall(r"a(\d+)b","a23b")
    ['23']
>>> re.findall(r"a(\d+?)b","a23b") #如果前后均有限定条件,则非匹配模式失效
    ['23']

2 如果你要多行匹配,那么加上re.S和re.M标志

re.S:.将会匹配换行符,默认.逗号不会匹配换行符

>>> re.findall(r"a(\d+)b.+a(\d+)b","a23b\na34b")
    []
>>> re.findall(r"a(\d+)b.+a(\d+)b","a23b\na34b",re.S)
    [('23','34')]
>>>

re.M:^$标志将会匹配每一行,默认^只会匹配符合正则的第一行;默认$只会匹配符合正则的末行

>>> re.findall(r"^a(\d+)b","a23b\na34b")
    ['23']
>>> re.findall(r"^a(\d+)b","a23b\na34b",re.M)
    ['23','34']

但是,如果没有^标志,

>>> re.findall(r"a(\d+)b","a23b\na34b")
    ['23','43']

可见,是无需re.M

import re
n='''12 drummers drumming,
11 pipers piping, 10 lords a-leaping'''
p=re.compile('^\d+')
p_multi=re.compile('^\d+',re.MULTILINE) #设置 MULTILINE 标志
print re.findall(p,n) #['12']
print re.findall(p_multi,n) # ['12', '11']
import re
a = 'a23b'
print re.findall('a(\d+?)',a) #['2']
print re.findall('a(\d+)',a) #['23']
print re.findall(r'a(\d+)b',a) #['23']
print re.findall(r'a(\d+?)b',a) # ['23']
b='a23b\na34b'
''' . 匹配非换行符的任意一个字符'''
print re.findall(r'a(\d+)b.+a(\d+)b',b) #[]
print re.findall(r'a(\d+)b',b,re.M) # ['23', '34']
print re.findall(r'^a(\d+)b',b,re.M) # ['23', '34']
print re.findall(r'a(\d+)b',b) #['23','34'] 可以匹配多行
print re.findall(r'^a(\d+)b',b) # ['23'] 默认^只会匹配符合正则的第一行
print re.findall(r'a(\d+)b$',b) # ['34'] 默认$只会匹配符合正则的末行
print re.findall(r'a(\d+)b',b,re.M) #['23', '34']
print re.findall(r'a(\d+)b.?',b,re.M) # ['23', '34'] 表达式中的'.'匹配除换行符以外的字符,'?'匹配前一个字符0次或1次
print re.findall(r"a(\d+)b", "a23b\na34b") # ['23', '34']

注:Python3.4中,print为函数,需要加括号

Python 相关文章推荐
vc6编写python扩展的方法分享
Jan 17 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
Python OpenCV实现图片上输出中文
Jan 22 Python
VScode编写第一个Python程序HelloWorld步骤
Apr 06 Python
Python读写及备份oracle数据库操作示例
May 17 Python
Python网页正文转换语音文件的操作方法
Dec 09 Python
python自动保存百度盘资源到百度盘中的实例代码
Aug 26 Python
python psutil监控进程实例
Dec 17 Python
Django 项目布局方法(值得推荐)
Mar 22 Python
Django中的模型类设计及展示示例详解
May 29 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 Python
关于Python 3中print函数的换行详解
Aug 08 #Python
Python tkinter模块中类继承的三种方式分析
Aug 08 #Python
Python实现注册登录系统
Aug 08 #Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
Aug 08 #Python
Python3 适合初学者学习的银行账户登录系统实例
Aug 08 #Python
Python初学时购物车程序练习实例(推荐)
Aug 08 #Python
Python爬虫之xlml解析库(全面了解)
Aug 08 #Python
You might like
PHP ADODB生成下拉列表框功能示例
2018/05/29 PHP
js操作二级联动实现代码
2010/07/27 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
jQuery+正则+文本框只能输入数字的实现方法
2016/10/07 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
如何通过python实现人脸识别验证
2020/01/17 Python
opencv+python实现均值滤波
2020/02/19 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
在keras中实现查看其训练loss值
2020/06/16 Python
爱游人:Travelliker
2017/09/05 全球购物
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
业务主管岗位职责
2013/11/20 职场文书
选秀节目策划方案
2014/06/06 职场文书
内科护士节演讲稿
2014/09/11 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
内勤岗位职责
2015/02/10 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
安全承诺书格式范本
2015/04/28 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技