麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

python 正則表達式貪婪模式與非貪婪模式原理、用法實例分析

2024-09-09 19:02:13
字體:
來源:轉載
供稿:網友

本文實例講述了python 正則表達式貪婪模式與非貪婪模式原理、用法。分享給大家供大家參考,具體如下:

之前未接觸過正則表達式,今日看python網絡爬蟲的源碼,里面一行正則表達式匹配的代碼初看之下,不是很理解,代碼如下:

myItems = re.findall('<div.*?class="content".*?title="(.*?)">(.*?)</div>',unicodePage,re.S)

“.*?”這種匹配方式,按理解應該是匹配任意字符0個或多個(re.S模式,“.”可以匹配“/n”),但是這個“?”總覺的在這兒是多余的,既然不理解,就敲代碼試試:

import repatern = re.compile('www/..*')match1 = patern.match("www.baidu.com")if match1:  print(match1.group())else:  print("match1 don't match")#output>>> ==================RESTART =============================>>> www.baidu.com

這個結果,應該說是意料之中,加個“?”呢?

import repatern = re.compile('www/..*?')match1 = patern.match("www.baidu.com")if match1:  print(match1.group())else:  print("match1 don't match")#output>>> ==================RESTART =============================>>> www.

竟然是這個結果。。。“.?”一個字符都沒匹配,按“.”、“”、“?”的匹配理解,也就是“*”“?”均匹配前面字符0次,才會是這個結果,可是為啥就是0次了?

這就是正則表達式貪婪模式和非貪婪模式:

貪婪模式,總是嘗試匹配盡可能多的字符; 非貪婪模式則相反,總是嘗試匹配盡可能少的字符。

Python里數量詞默認是貪婪的,這就解釋了第一個匹配實驗,輸出結果為”www.baidu.com”(貪婪模式),也就是說第二個匹配實驗是非貪婪模式,僅僅因為加了“?”,繼續實驗

import repatern = re.compile('www/..?')match1 = patern.match("www.baidu.com")if match1:  print(match1.group())else:  print("match1 don't match")#output>>> ==================RESTART =============================>>> www.b

此次匹配結果,顯然是貪婪模式。奇怪了,也就是“?”的特殊組合才是非貪婪模式。

網上搜索得如下說明:

標準量詞修飾的子表達式,在可匹配可不匹配的情況下,總會先嘗試進行匹配,稱這種方式為匹配優先,或者貪婪模式。此前介紹的一些量詞,“{m}”、“{m,n}”、“{m,}”、“?”、“*”和“+”都是匹配優先的。
一些NFA正則引擎支持忽略優先量詞,也就是在標準量詞后加一個“?”,此時,在可匹配可不匹配的情況下,總會先忽略匹配,只有在由忽略優先量詞修飾的子表達式,必須進行匹配才能使整個表達式匹配成功時,才會進行匹配,稱這種方式為忽略優先,或者非貪婪模式。忽略優先量詞包括“{m}?”、“{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。

顯然“*?”的組合是非貪婪模式,猜想正確,原來如此啊。

PS:這里再為大家提供2款非常方便的正則表達式工具供大家參考使用:

JavaScript正則表達式在線測試工具:
http://tools.jb51.net/regex/javascript

正則表達式在線生成工具:
http://tools.jb51.net/regex/create_reg

更多關于Python相關內容可查看本站專題:《Python正則表達式用法總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩视频一区二区三区在线观看 | 欧美成人一二三区 | 免费观看黄色影片 | 男女隐私免费视频 | 亚洲一区二区中文字幕在线观看 | 欧美日韩一区二区综合 | 欧美18一19sex性护士农村 | 国产在线播放91 | 超碰人人做人人爱 | 性明星video另类hd | 欧美18videos性处按摩 | 国产一级午夜 | 久章草影院| 久久av一区二区 | 免费a级黄色片 | 国产亚洲精品久久久久久久久 | 午夜色视频在线观看 | 午夜精品小视频 | 欧美成人se01短视频在线看 | 成年人黄色片视频 | 国产精品久久久久久久久粉嫩 | 91成人一区二区三区 | av国产片 | 看毛片免费 | 久久影库 | 欧美性生活xxxxx | 色悠悠久久久久 | 成人免费在线视频播放 | 狠狠久久| 看毛片免费 | 久久经典视频 | 久草在线资源福利站 | 久久国产精品系列 | 国产免费视频一区二区裸体 | 欧美性猛交一区二区三区精品 | 午夜精品福利影院 | 日本在线播放一区二区 | 久久精品欧美一区二区三区不卡 | 91精品国产91久久久久久丝袜 | 广州毛片| 午夜a狂野欧美一区二区 |