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.pswp.cn/news/529789.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529789.shtml
英文地址,請注明出處:http://en.pswp.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…