python爬蟲學習三:python正則表達式python
本身寫的一個爬蟲:https://github.com/qester/wordpres_Crawlergit
一、正則表達式基礎github
a、正則表達式的大體匹配過程:正則表達式
一、依次拿出表達式和文本中的字符比較python爬蟲
二、若是每個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。ide
三、若是表達式中有量詞或邊界,這個過程會稍微有些不一樣。學習
b、正則表達式語法學習(參考網頁吧)spa
二、re模塊對象
python經過模塊提供正則表達式的支持。使用re的通常步驟是:索引
s一、先將正則表達式的字符串形式編譯成Pattern實例;
s二、而後使用Pattern實例處理文本並得到匹配結果(一個Match實例);
s三、最後使用Match實例獲取信息,進行其餘操做。
a、Compile
re.Compile(strPattern[,flag]):
這個方法是Pattern類的工廠方法,用於將字符串形式的正則表達式編譯爲Pattern對象。
flag參數是匹配模式,取值可使用按位或運算符"|"表示同時生效,好比re.re.M.
flag的可選值有:
re.I:忽略大小寫
re.M:多行模式
re.S:點任意匹配模式
re.L:
re.U:
re.X:詳細模式
b、Match
Match對象是一次匹配的結果,包含了不少關於這次匹配的信息,可使用Match提供的可讀
屬性或方法來獲取這些信息。
屬性:
string:匹配時使用的文本。
re:匹配時使用的Pattern對象。
pos:文本中正則表達式開始搜索的索引。
endpoe:結束搜索的索引
lastindex:最後一個被捕獲的分組在文本中的索引。若是沒有被捕獲的分組,將爲None。
lastgroup:最後一個被捕獲的分組的別名。如沒有,則爲None。
方法:
group([group1,....]):
得到一個或多個分組截獲的字符串;指定多個參數時將以元組的形式返回。不寫參數時返回group(0).
groups([default]):
以元組的形式返回所有分組截獲的字符串。
groupdict([default]):
返回以有別名的組的別名爲鍵、以該組截獲的子串爲值得字典,沒有別名的組不包含在內。
start([group]):
返回指定的組截獲的子串在string中的起始索引(子串第一個字符的索引)。
end([group]):
返回指定的組截獲的子串在string中的結束索引(子串最後一個字符的索引+1)。
span([group]):
返回(stat(group),end(group))。
expand(template):
將匹配到的分組代入template中而後返回。
c、Pattern
Pattern對象是一個編譯好的正則表達式,經過Pattern提供的一系列方法能夠對文本進行匹配查找。
Pattern不能直接實例化,必須使用re.compile()進行構造,也就是re.compile()返回的對象。
Pattern提供了幾個可讀屬性用於獲取表達式的相關信息:
pattern:編譯時用的表達式字符串
flags:編譯時用的匹配模式,數字形式。
groups:表達式中分組的數量。
groupindex:以表達式中有別名的組的別名爲鍵、以該組對應的編號爲值,沒有別的別名的組不包含在內。
三、一些Pattern的實例方法:
a、match方法:返回一個match對象
b、search方法:返回一個match對象
c、spilt方法:按照可以匹配的子串將string進行分割後返回列表。
d、findall方法:以列表返回所有可以匹配的子串。
e、finditer方法:返回一個順序方位每個匹配結果的迭代器。
f、sub方法:sub(repl,string):使用repl替換string的每個匹配的子串後返回替換後的字符串。