python爬蟲基礎知識(二)--正則表示式
regular expression :描述字串排列的一套規則,通過這套規則,我們可以過濾掉不需要的資訊,從而提取出我們需要的資訊,在爬蟲中,我們如果想要從網頁中獲取我們想要的資訊就需要構造相應的正則表示式結合python的方法進行獲取。
1.原子
原子是正則表示式中最基本的單位,每個正則表示式至少包含一個原子,原子型別:
1)普通字元
import re
pattern="hello"
string="abdsafdasdhelloAsad"
result=re.search(pattern,string)
print(result)
2)非列印字元作為原子
\n—>換行符
\t–>製表符
import re
pattern="\n"
string='''abdsafdasdhelloAsa
dadassd'''
result=re.search(pattern,string)
print(result)
3)通用字元
符號 | 含義 |
---|---|
\w | 匹配任意一個字母,數字或下劃線 |
\W | 與/w相反 |
\d | 匹配任意一個十進位制數 |
\D | 與/d相反 |
\s | 匹配一個任意空白字元 |
\S | 與/s相反 |
import re
pattern="\wsa"
string='''abdsafdasahelloAsa
dadassd'''
result=re.search(pattern,string)
print(result)
輸出:
<_sre.SRE_Match object; span=(2, 5), match='dsa'>
4)原子表
原子表的意思就是可以定義一組平等的原子,在匹配的時候取該原子表的任意一個原子進行匹配,原子表用[]表示,比如[cvb]oo就是在cvb中任意選一個元素,coo,voo,boo都是正確的匹配,類似的[^cvb]oo表示的不包括cvb中的任意一個。
import re
pattern="[abc]s"
string='''abdsafdasahelloAsa
dadassd'''
result=re.search(pattern,string)
print(result)
result:
<_sre.SRE_Match object; span=(7, 9), match='as'>
2.元字元
元字元就是正則表示式裡面表示特殊含義的字元,比如重複n次前面的元素,具體的表可以參照正則表示式速查表
import re
pattern1="^ab"
pattern2="sd$"
string='''abdsafdasahelloAsa
dadassd'''
result1=re.search(pattern1,string)
result2=re.search(pattern2,string)
print(result1)
print(result2)
3.模式修正
模式修正的含義的就是實現一些匹配結果的調整,比如不區分大小寫(I),多行匹配(M)等
import re
pattern2="sd$"
string='''abdsafdasahelloAsa
dadasSd'''
result2=re.search(pattern2,string,re.I)
print(result2)
結果:
<_sre.SRE_Match object; span=(31, 33), match='Sd'>
4.貪婪模式和懶惰模式
這兩個名詞的含義一看都能明白,貪婪的意思就是儘可能多的匹配,懶惰的模式就是隻匹配一個,實現這種簡單的貪婪模式比如正則表示式”p.*y”,這就是貪婪模式。
正則表示式常用函式
1)re.match(pattern,string,flag),從源字串開始位置開始匹配
2)re.serach(),掃描整個字串
3)全域性匹配函式
全域性匹配函式就是要匹配所有有可以匹配的字元,所有的結果都要提出來
思路:
使用re.compile()對正則表示式預編譯–>使用findall()根據正則表示式找出所有結果。
import re
string="abcdfsdfdabdfsdfdsvsfd"
pattern=re.compile(".b.")
result=pattern.findall(string)
print(result)
結果:
['abc', 'abd']
4)re.sub(pattern,rep,string,max)根據pattern,從string中找出符合條件的結果,替換為req,最多可替換max次,預設為全部替換。
—-end————–