python爬蟲學習三:python正則表達式

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的每個匹配的子串後返回替換後的字符串。

相關文章
相關標籤/搜索