正則表達式的使用
近來寫爬蟲經(jīng)常要從網(wǎng)頁中截取某些鏈接,用find方法很是麻煩,現(xiàn)在發(fā)現(xiàn)正則表達式是真的好用,寫出來分享一下
有一個笑話講的好,當你發(fā)現(xiàn)有一個問題能用正則表達式解決時,你就有了兩個問題,確實是這樣,構(gòu)造一個表達式確實沒有現(xiàn)象中那么簡單\
我以python中re模塊作為測試,最后以抓取(百度壁紙吧)[https://tieba.baidu.com/p/3740796143#!/l/p1]的圖片為例寫一個python代碼
()[]
實例
.是和windows中*一樣作用的通配符
!()[]
那如果我想單獨匹配.怎么辦?用\把特殊含義去掉就好
用中括號可以匹配任意字符類
!()[]
如上圖所示,[0-9]很明顯重復了,所以我們可以這樣寫,用大括號可以描述重復次數(shù)
!()[]
\d可以表示任意數(shù)字
!()[]
那我們試著描述一下192.168.1.1/24這個地址段
先分析一下它有什么特點,每個數(shù)字的范圍都是0-255,那我們試著描述一下
!()[]
怎么匹配到了1?
很不幸的是匹配只能匹配到0-9,所以得這樣寫
!()[]
這還只是三位數(shù)的,那么10.3.9.12這樣的就沒辦法表示了,那怎么辦呢?
用過{0,1}表示一下次數(shù)就好了
!()[]
好了,就是這么長一串 0.0
|是或的意思
例如:
!()[]
^表示出現(xiàn)在頭部
$表示出現(xiàn)在尾部
例如:
!()[]
\后加數(shù)字表示子組
例如匹配 LavinciLavinci
[^a-z]脫字符表示取反
!()[]
//未完待續(xù)
import re
pattern = re.compile(r'hello')
match = pattern.match('hello world!')
if match:
print match.group()