之前說過,使用urllib和urllib2,只是為了獲取指定URL的html內容,而對內容進行解析和篩選,則需要借助python中的正則表達式來完成。
一、預備知識:
1.正則表達式簡述:
什么是正則表達式?正則表達式就是可以匹配文本片段的模式,最簡單的正則表達式就是一個字符串,用於在文本中匹配到此字符串自身。
2.常用正則表達式:
設計正則表達式的時候有幾個注意點如下:
a.特殊符號需要加轉移符:如要匹配'china.com',則正則表達式格式應為'china\\.com';
b.字符集(使用中括號[]來包含字符串組成字符集):如[a-z]表示匹配從a到z之間的字符;此外,還有一個反轉字符集,使用^符號開頭:如[^abc]表示匹配除了a、b、c三個字符之外的字符;
c.選擇符:如要匹配'python'和'page',寫出來的模式為'python|page',其中‘|’是管道符號;
d.子模式:如‘p(ython|age)’;
e.可選項:在模式后面加上問好(?),那該模式就變成了可選項,即其可能出現在匹配到的字符串中,但是並非必須的,如r'(http://)?(www.)?shuhe.com'可匹配的結果有:
http://www.shuhe.com、http://shuhe.com、www.shuhe.com、shuhe.com
f.重復子模式:
(pattern)*:允許模式重復0次或多次
(pattern)+:允許模式重復1次或多次
(pattern){m,n}:允許模式重復m~n次
例如:
r'w*\.python\.org'匹配'www.python.org'、'.python.org'、'wwwwww.python.org'
r'w+\.python\.org'匹配'w.python.org';但不匹配'.python.org'
r'w{3,4}\.python\.org'只能匹配'www.python.org'和'wwww.python.org'
二、re模板的使用:
在python中封裝了一些常用的正則表達式在re模板中,使用時只需將該模板引入到當前項目中即可:
上述是re中常用的正則表達式,使用步驟為:
1.先將正則表達式的字符串形式編譯為Pattern實例;
2.然后使用Pattern實例處理文本並獲得匹配結果(一個Match實例);
3.最后使用Match實例獲得信息,進行其他的操作。
例如:
# encoding: UTF-8 import re # 將正則表達式編譯成Pattern對象 pattern = re.compile(r'hello') # 使用Pattern匹配文本,獲得匹配結果,無法匹配時將返回None match = pattern.match('hello world!') if match: # 使用Match獲得分組信息 print match.group() ### 輸出 ### # hello