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

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


自己寫的一個爬蟲:https://github.com/qester/wordpres_Crawler


1、正則表達式基礎


a、正則表達式的大致匹配過程:

1、依次拿出表達式和文本中的字符比較

2、如果每一個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。

3、如果表達式中有量詞或邊界,這個過程會稍微有些不同。


b、正則表達式語法學習(參考網頁吧)


2、re模塊


python通過模塊提供正則表達式的支持。使用re的一般步驟是:

s1、先將正則表達式的字符串形式編譯成Pattern實例;

s2、然後使用Pattern實例處理文本並獲得匹配結果(一個Match實例);

s3、最後使用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:以表達式中有別名的組的別名爲鍵、以該組對應的編號爲值,沒有別的別名的組不包含在內。


3、一些Pattern的實例方法:


a、match方法:返回一個match對象

b、search方法:返回一個match對象

c、spilt方法:按照能夠匹配的子串將string進行分割後返回列表。

d、findall方法:以列表返回全部能夠匹配的子串。

e、finditer方法:返回一個順序方位每一個匹配結果的迭代器。

f、sub方法:sub(repl,string):使用repl替換string的每一個匹配的子串後返回替換後的字符串。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章