1. 程式人生 > >關於python正則表示式中匹配分組的問題

關於python正則表示式中匹配分組的問題

在爬取網頁資訊時,我們不妨會用到Python正則表示式。之前一直沒有太明白關於正則表示式匹配分組的問題,今天終於搞清楚了,所以特意寫一下讓自己印象深刻。

myPage = requests.get(url).content.decode("gbk")

通過requests我們在網頁得到了這樣的html程式碼

我想對下面這一句通過正則表示式進行提取它的資訊

使用正則表示式

mypage_Info = re.findall(r'<div class="titleBar" id=".*?"><h2>.*?</h2><div class="more"><a href="(.*?)">.*?</a></div></div>', myPage, re.S)

請注意上式的括號!

此時只有一個括號,最後我們只得到了一個匹配分組

可以看到得到了一個元素僅僅為網址的list,這是因為剛剛括號括到的地方只有網址,代表我們只有一個匹配分組。

這時我們將程式碼改寫為

mypage_Info = re.findall(r'<div class="titleBar" id=".*?"><h2>(.*?)</h2><div class="more"><a href="(.*?)">.*?</a></div></div>', myPage, re.S)

仔細看的話會發現我在<h2>後面加上了括號,我在“移動

”這樣的文字出現的地方,建立了一個分組。

得到的結果是

可以看到現在我們得到的list,內部的元素已經變為了一個tuple。通過這個例子,應該就能說明這個正則表示式中這個“括號”的作用了。