輕松入門正則表達(dá)式之非貪婪匹配篇詳解
非貪婪匹配 (.*?)
import re
a = '456qwe789rty123abc'
re=re.findall('456(.*?)789',a)
print(re)

通常情況,滿足匹配規(guī)則“456(.*?)789”的內(nèi)容通常不止一個(gè),那么findall()函數(shù)會(huì)從字符串的起始位置開始尋找文本A,找到后開始尋找文本B,當(dāng)找到第一個(gè)文本B后,暫時(shí)停止尋找,將文本A和文本B之間的內(nèi)容存入列表;然后繼續(xù)尋找文本A,并重復(fù)之前的步驟,直到到達(dá)字符串的結(jié)束位置,并將所有匹配到的內(nèi)容存入列表。
import re
a = '456qwe789rty123456kkk789abc456xiaowang789'
re=re.findall('456(.*?)789',a)
print(re)

貪婪模式的話就會(huì)尋找最長(zhǎng)的
import re
a = '456qwe789rty123456kkk789abc456xiaowang789'
re=re.findall('456(.*)789',a)
print(re)

非貪婪匹配 .*?
import re
a='<a rel="external nofollow" target="_blank" data-report-click="{"spm":"3001.5501"}" data-report-query="spm=3001.5501" data-v-6fe2b6a7="">'
re=re.findall('<a href="(.*?)" rel="external nofollow" rel="external nofollow" .*?',a)
print(re)

" 和 url后面的html代碼用.*?代表,需要提取的是<a href="后的內(nèi)容,用“(.*?)”代表
實(shí)戰(zhàn)爬取博客專欄url
import re,requests
url='https://blog.csdn.net/weixin_42403632/category_11076268.html'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0'}
html=requests.get(url,headers=headers).text
re=re.findall('<a href="(.*?)" rel="external nofollow" rel="external nofollow" .*?rel="noopener">',html)
for i in re:
print(i)

到此這篇關(guān)于輕松入門正則表達(dá)式之非貪婪匹配篇詳解的文章就介紹到這了,更多相關(guān)正則表達(dá)式 非貪婪匹配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
正則表達(dá)式匹配解析過(guò)程探討分析(正則表達(dá)式匹配原理)
已經(jīng)有多篇關(guān)于正則表達(dá)式介紹的文章,隨著我們?cè)絹?lái)越多使用正則表達(dá)式,想對(duì)性能做優(yōu)化、減少我們正則表達(dá)式書寫匹配Bug。我們不得不進(jìn)一步深入了解正則表達(dá)式執(zhí)行過(guò)程了2015-10-10
asp正則表達(dá)式匹配數(shù)字$數(shù)字$數(shù)字$
用asp實(shí)現(xiàn)的匹配:數(shù)字$數(shù)字$數(shù)字$...... 的正則2008-04-04
vbs:能算出一個(gè)字符在一字段里共出現(xiàn)有幾次的函數(shù)
vbs:能算出一個(gè)字符在一字段里共出現(xiàn)有幾次的函數(shù)...2007-04-04
AS3 js正則表達(dá)式 反向引用(backreference)
這篇文章主要介紹了AS3 js正則表達(dá)式 反向引用(backreference) 的相關(guān)資料,需要的朋友可以參考下2016-03-03
詳解基于Linux下正則表達(dá)式(基本正則和擴(kuò)展正則命令使用實(shí)例)
正則表達(dá)式應(yīng)用廣泛,在絕大多數(shù)的編程語(yǔ)言都可以完美應(yīng)用,在Linux中,也有著極大的用處。 有興趣的可以了解一下。2017-01-01

