python爬蟲之正規表示式回顧

2021-10-03 02:49:17 字數 2901 閱讀 7920

前面使用正規表示式匹配了文字及屬性,提取到了想要的內容,學習完之後,來回顧總結總結。

\w 匹配字母、數字及下劃線

\w 匹配不是字母、數字及下劃線的字元

\s 匹配任意空白符,等價於[\t \n \r \f]

\s 匹配任意非空字元

\d 匹配任意數字,等價於[0-9]

\d 匹配任意非數字的字元

\a 匹配字串開頭

\z 匹配字串結尾,如果存在換行,只匹配換行前的結束字串

\z 匹配字元產結尾,如果存在換行,同時還會匹配換行符

\g 匹配最後匹配完成的位置

\n 匹配乙個換行符

\t 匹配乙個製表符

^ 匹配一行字串的開頭

$ 匹配一行字串的結尾

. 匹配任意字元,除了換行符,當re.dotall標誌被指定時,則可以匹配包括換行符的任意字元

[…] 用來表示一組字元,單獨列出,比如[amk]匹配a、m或k

[^…] 不在[ ]中的字元,比如[^abc]匹配除了a、b、c之外的字元

(*) 星號表示匹配0個或多個表示式

(+) 加號表示匹配乙個或多個表示式

? 匹配0個或1個前面的正規表示式定義的片段,非貪婪方式

精確匹配n個前面的表示式

匹配n到m次由前面正規表示式定義的片段,貪婪方式

a|b 匹配a或b

( ) 匹配括號內的表示式,也表示乙個組

match()方法匹配,匹配方式為從頭開始匹配,如果匹配則返回匹配成功的結果,一旦開頭不對,則返回none,使用少。

例項:

#入re模組

import re

#自己寫的一段**

cntent=

'this is python 321 456'

#使用match方法匹配文字,^表示匹配以字元產開頭,.*表示匹配任意字元

item = re.match(

'^this.*'

,cntent)

print

(item)

在貪婪匹配,.*會匹配盡可能多的字元。

輸出的結果就只有數字3

例項:

#匯入re模組

import re

#自己寫的一段文字

cntent=

'this 123 is python yes'

item = re.match(

'^th.*(\d+).*yes$'

,cntent)

print

(item)

print

(item.group(1)

)

非貪婪匹配,點號星號問號就盡可能匹配少的字元。

例項:

#匯入re'模組

import re

#自己寫的一段文字

cntent=

'this 123 is python yes'

#當採用非貪婪匹配時,則匹配盡可能少字元,輸出結果為123

item = re.match(

'^th.*?(\d+).*?yes$'

,cntent)

print

(item)

print

(item.group(1)

)

在做匹配時,字串中間盡可能使用非貪婪匹配。

re.i		使匹配對大小寫不敏感

re.l 做本地化識別(locale-aware)匹配

re.m 多行匹配,影響^和$

re.s 使.匹配包括換行在內的所有字元

re.u 根據unicode字符集解析字元。這個標誌影響\w、\w、\b、\b

re.x 該標誌通過給予你更靈活的格式以便你將正規表示式寫的更易於理解

在網頁匹配中,較為常用的為re.s和re.i

當匹配的內容中包含有 . 時,如果再用之前的匹配則可能匹配出錯,此時就要用到轉義字元。

例項:

#匯入re模組

import re

#一段文字

text =

"www.csdn.com"

#使用\.匹配.

item = re.match(

'www\.csdn\.com$'

,text)

print

(item)

當要匹配 . 時,使用反斜槓 . 則可以匹配到 . 號。

search()方法會掃瞄整個字串,然後返回第乙個成功匹配的結果。如果沒有找到匹配內容,則返回none。

例項:

#匯入re模組

import re

#一段文字

text =

'i am a student 123 and study python '

item = re.search(

'am.*?(\d+).*?python'

,text)

print

(item)

如果想要匹配整片文字的想要的內容,就需要使用findall()方法來匹配,findall會搜尋整個文字內容,返回全部匹配到的結果。

例項:可參考

如果想要把字串中的數字去掉,可以借助sub()方法

例項:

#匯入re模組

import re

#一段文字

text =

'i am a student 123 and study python '

#sub方式去掉數字

item = re.sub(

'\d+',''

,text)

print

(item)

compile()可以將正則字串編譯成正規表示式物件,以便在後面的匹配中復用。

例項:可參考

python爬蟲之正規表示式

search函式 import re re庫 pattern re.compile r worlda compile編譯生成可操作物件 m re.search pattern,hello world search的結果有一些屬性,其 中group 返回 如果查詢成功,則返回匹配的段落 if m pr...

python爬蟲 正規表示式

正規表示式是十分高效而優美的匹配字串工具,一定要好好掌握。利用正規表示式可以輕易地從返回的頁面中提取出我們想要的內容。1 貪婪模式與非貪婪模式 python預設是貪婪模式。貪婪模式,總是嘗試匹配盡可能多的字元 非貪婪模式,總是嘗試盡可能少的字元。一般採用非貪婪模式來提取。2 反斜槓問題 正規表示式裡...

Python爬蟲 正規表示式

一般的正規表示式都可直接到正則生成工具處生成,常見匹配字元 re.match及其常規匹配 re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match 就返回none。re.match pattern,string,flags 0 返回的為乙個物件,其中span代表長...