国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python re模塊匹配貪婪和非貪婪模式詳解

2020-02-15 21:17:04
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了python re模塊匹配貪婪和非貪婪模式詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

python貪婪和非貪婪

正則表達式通常用于在文本中查找匹配的字符串。Python里數量詞默認是貪婪的(在少數語言里也可能是默認非貪婪),總是嘗試匹配盡可能多的字符;非貪婪則相反,總是嘗試匹配盡可能少的字符。在"*","?","+","{m,n}"后面加上?,使貪婪變成非貪婪。

>>> s="This is a number 234-235-22-423">>> r=re.match(".+(/d+-/d+-/d+-/d+)",s)>>> r.group(1)'4-235-22-423'>>> r=re.match(".+?(/d+-/d+-/d+-/d+)",s)>>> r.group(1)'234-235-22-423'>>>

正則表達式模式中使用到通配字,那它在從左到右的順序求值時,會盡量“抓取”滿足匹配最長字符串,在我們上面的例子里面,“.+”會從字符 串的啟始處抓取滿足模式的最長字符,其中包括我們想得到的第一個整型字段的中的大部分,“/d+”只需一位字符就可以匹配,所以它匹配了數字“4”,而“.+”則匹配了從字符串起始到這個第一位數字4之前的所有字符。

解決方式:非貪婪操作符“?”,這個操作符可以用在"*","+","?"的后面,要求正則匹配的越少越好。

下面這個例子仔細體會下

>>> re.match(r"aa(/d+)","aa2343ddd").group(1)'2343'>>> re.match(r"aa(/d+?)","aa2343ddd").group(1)'2'>>> re.match(r"aa(/d+)ddd","aa2343ddd").group(1) '2343'>>> re.match(r"aa(/d+?)ddd","aa2343ddd").group(1)'2343'>>>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新巴尔虎右旗| 墨竹工卡县| 县级市| 腾冲县| 泰州市| 乐业县| 如皋市| 阳东县| 彩票| 堆龙德庆县| 绥棱县| 岑溪市| 普兰县| 喀什市| 双柏县| 偃师市| 科尔| 上饶县| 汉沽区| 巩义市| 蒙自县| 彩票| 阜新市| 瑞金市| 宁波市| 冀州市| 哈巴河县| 广宁县| 盈江县| 库伦旗| 射阳县| 阿鲁科尔沁旗| 沙湾县| 拉孜县| 上饶市| 娄底市| 苍梧县| 嘉禾县| 大英县| 晋宁县| 永德县|