python非贪婪匹配_Python中关于正则表达式非贪婪以及多行匹配功能详解

这篇文章主要介绍了Python正则表达式非贪婪、多行匹配功能,结合实例形式分析了Python正则表达式中非贪婪及多行匹配功能的实现方法与相关注意事项,需要的朋友可以参考下

本文实例讲述了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为函数,需要加括号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小米9android q测试版,基于Android Q的MIUI来了 小米9尝鲜

01基于Android Q的MIUI来了中关村在线消息:谷歌在今年五月份发布了最新的Android Q系统,虽然很多国产手机还没有升级到Android P,但是还是有不少厂家开始对旗下的手机升级到最新的Android Q系统,根据小米最新的官方的消息&#xf…

ios传值给js_WKWebView JS与OC间相互传值调用

写在前面本文将介绍如何使用WKWebView进行JS与OC、OC与JS间的传值和方法调用。前置条件1、导入WebKit.framework2、声明WKWebViewJS调用OC原生方法1、前端在js文件中实现这里要注意messageHandlers后面跟着的deviceInfo要与原生的定义的一致。2、iOS 实现WKScriptMessageHandle…

android layerlist bitmap,android shape类似的 另一个 高端用法:layer-list

android shape类似的 另一个 高端用法:layer-list:简介:将多个图片或上面两种效果按照顺序层叠起来” 《?xml version"1.0" encoding"utf-8"?>《layer-listxmlns:android"http://schemas.android.com/apk/res/…

跨域会报40几_总结一下跨域的几种情况

在网站开发中,经常会遇到跨域问题,下面总结一下集中常见的跨域问题。1. 不同域名属于跨域,如:www.a.com 和www.b.com,另外www.a.com 和www.a.com.cn也属于不同域名。2. 主域名和子域名(二级域名、三级域名等)跨域&…

android将拍摄的图片存入sd卡中,Android将图片保存至SD卡上

首先判断SD卡是否插入-->public String getSDPath(){File SDdirnull;boolean sdCardExistEnvironment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);if(sdCardExist){SDdirEnvironment.getExternalStorageDirectory();}if(SDdir!null){return S…

nedc和epa续航里程什么意思_400公里已成续航新起点,纯电动车的实用性到底怎样...

对于购买纯电动汽车的用户来说,续航里程是非常重要的参考因素,毕竟如果续航里程太短,实用性将会大打折扣,跑个长途都心惊胆战的,生怕路上遇到堵车了、没电了、中途没有加油站之类的。就算是不考虑长途,市区…

android广播示例,android接受开机广播事件

【实例简介】【实例截图】【核心代码】package com.yin.servicetest;import com.yin.service.MyService;import android.app.ActivityManager;import android.app.ActivityManager.RunningServiceInfo;import android.content.BroadcastReceiver;import android.content.Contex…

java class类_关于创建java中的class类的对象的方法

1.由于Class类没有公共构造方法,所有创建Class的对象的方法有以下几种:①通过Class.forName()静态方法返回Class类的一个实例Class cls Class.forName("test.dog - 这个网站可出售。 - 最佳的test 来源和相关信息。");②通过类名.class来获取…

android remote shell,关于 Appium V1.7.2 新增的唯一安卓可执行 mobile 命令 shell 的疑问...

关于 mobile: shell 在更新日志中说明,是从 1.7.1 升级到 1.7.2 中 “Add --relaxed-security, and mobile: shell access to adb”,并搜索 github 中 appium 库,找到需要配置 desiredcapabilities 中 relaxedSecurityEnabled 为 true&#x…

linux 正则查找email_Hello Iris简易微博类App开发教程3-查找用户和用户登录

用户邮箱地址有效性验证在上一节中,我们编写了用于用户注册的代码。但是当时并没有为用户的Email添加有效性验证,导致Email被设置为任何字符串都能注册成功。所以在本节初,我们首先来为Email添加一个有效性验证。首先还是来编写测试数据&…

pyqt生成 android,PyQt on Android

问题Im working on PyQt now, and I have to create the application on Android, Ive seen the kivy library, but its too crude.Is there any way now to run an application on Android made on PyQt?回答1:Android does not support pyQt4. PyQt5 is however supported(r…

原生的html组件,如何创建HTML5与原生UI组件混合的移动应用程序

本文将介绍如何使用Trigger.io创建原生的顶部栏、标签栏、以及HTML/CSS/JavaScript的混合型移动应用程序。以后我们将添加更多的原生UI组件到Trigger.io,但现在你只需要使用web技术就可以在IOS和Android上创建漂亮而流畅的移动应用。这是一个简单的菜谱应用程序的屏…

c语言不会可以学好java吗_有人说学了C语言,两天就能学会Java,两个星期就可以找工作?...

作为一个过来人来说,编程如果真的那么简单就不会导致现在各大公司还喊着招不到人的情况了,虽然编程领域里面有触类旁通的说法,但这个说法只是针对于对于一种编程已经掌握到一定程度了,不是简单的学过或者做过就可以轻松的转向别的…

html 正则表达式验证金额,js金额校验,js正则表达式,包含正负,小数点后两位...

js金额校验,js正则表达式,包含正负,小数点后两位,js代码如下:function isMoney(s) {//金额 只允许正数//var exp /(^[1-9]([0-9])?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;//金额 允许正()负数//…

苹果app商品定价_【知乎问答】苹果 App Store 新推出的 1 元或 3 元定价对开发者有什么影响?...

徐小懒:我的游戏今年 10 月 1 日上线,定价 6 元。上线后,排名起起落落,总的来说一直在爬升。截止到 19 号之前,爬到总榜前 20(未刷榜),最多一天 300 个下载,累计下载 3500。19 号改成 1 元后,当…

sublime默认html,Sublime Text默认HTML评论

似乎对安装包装或拆卸包装有点隐蔽,因此需要进行一些调查才能解决问题。对于后台,用于注释(单行或块)的字符或字符的设置信息由tmPreferences类型的文件提供(不是tmLanguage,如在{您在问题的评论中链接到的教程)。文件的名称及其包含的包无关…

笔记本连接显示器后没有声音_电脑用HDMI外界显示器后,没有声音

本人使用Y450, 总感觉屏幕小, 现有PHILIPS 202E, 但是笨笨VGA坏了(真是悲催啊, 但是我强悍小Y跟我也有4~5个年头了, 可以理解) 所以买了HDMI赚VGA, 接上显示器后显示非常棒, 很爽, 绝对高清. 但是唯一的缺点就是接上HDMI后笨笨就没声音, 而且我的飞利浦又没有音频输出. 悲催了…

html文本域 高度自适应,textarea高度自适应,textarea随着内容高度变化

有时候我们需要textarea的高度随着内容的多少去自适应的变化,今天我使用了JS原生和JQ写了一个textarea的高度随着他的内容高度变化的代码,希望能帮上忙。废话不多说直接贴代码:textarea{ width:500px; margin:20px auto; padding:0; font-siz…

layer 线上_LAYER

SHIPPING TO : 가나(GHANA)SHIPPING TO : 가봉(GABON)SHIPPING TO : 가이아나(GUYANA)SHIPPING TO : 감비아(GAMBIA)SHIPPING TO : 과테말라(GUATEMALA)SHIPPING TO : 그레나다(GRENADA)SHIPPING TO : 그루지야(GEORGIA)SHIPPING TO : 그리스(GREECE)SHIPPING TO : 기니(GUINEA…

ajax为什么返回html标签,AJAX与特定值后返回的HTML标签

我想写使用jQuery的post.I传递的参数,以ajax.php并获得josn数据添加用户注释代码,如下:AJAX与特定值后返回的HTML标签var formObjectData $(# form_id).serialize() &flagadd_comment; // all$.post(http://192.168.3.3/myblog/ajax.p…