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