爬蟲學習筆記 正規表示式

2021-10-03 11:53:35 字數 2780 閱讀 3641

正規表示式re

import re

全稱:regular expression

首先,簡單表達一組字串

'pn'

,'pyn'

,'pytn'

,'pythn'

,'python'

regex=

"p(y|yt|yth|ytho)?n"

p=re.

compile

(regex)

re的作用:

1,表達文字型別的特徵

2,同時查詢或者替換一組字串

3,匹配字串的全部部分

編譯:將符合正規表示式語的字串轉換成正規表示式的特徵。

主要由字元和操作符組成。

.

#表任何單個字元 #字符集[^

]#非字符集,單個字元給出排除範圍 * #前乙個字元0次或無限次擴充套件

+#前乙個字元1次或無限次擴充套件 ? #前乙個字元0次或無限次擴充套件

! #左右表示式各乙個

#擴充套件前邊乙個字元m次 #擴充套件前邊乙個字元0次到n次

^#匹配字串的開頭 eg. ^abc $ #匹配字串的結尾 eg. abc$()

#分組標記,內部只能使用|操作符 \d #數字,等價於0-9

\w #單詞字元,等價於[a-za-z0-9]

#例子^

[a-za-z]

+$ #26字母字串

^[a-za-z0-9]

+$ #字母數字組成的字串

^-?\d+$ #整數形式字串^[

0-9]

*[0-

9][1

-9]*$ #正整數形式字串[1

-9]\d[\u4e00-\u9fa5]

#匹配中文字元

\d-\d

|\d-\d

#國內**號碼

re庫的使用:

raw string型別,原生字串型別r『text』

例如r』[1-9]\d』

當正規表示式中含有轉義符的時候,使用raw string

因為在string中,\會被當作轉義符,所以每個\都要變成\

0~99

:[1-

9]?\d

100~

199:

1\d200

~249:2

[0-4

]\d250

~255:25

[0-5

]

#re的功能函式

re.search(

)#匹配正規表示式第乙個位置,返回match物件

re.match(

)#從乙個字串開始位置匹配正規表示式,返回match物件

re.findall(

)#搜尋字串,以列表形式返回全部

re.split(

)#將乙個正規表示式按照正規表示式結果分割,返回列表型別

re.finditer(

)#搜尋字串,返回正規表示式迭代型別,每個迭代元素是match物件

re.sub(

)#在乙個字串替換所有匹配正規表示式的字串,返回替換後的

re.search(pattern,string,flags=0)

#pattern指string或者raw string

#string指待匹配字串

#flags指控制標記,主要有:

re.i re.ignorecase #忽略大小寫

re.m re.multiline # ^ 能將給定string的每行當作匹配開始

re.s re.dotall # . 預設匹配除換行外所有的字元,現在可以匹配所有字元

#re庫的函式式用法

#1rst=re.search(

)#2,物件導向

pat=re.

compile()

#編譯成正規表示式

rst=pat.search(

)

#match物件的屬性

.string 待匹配文字

.re 匹配時的re物件

.pos 正表搜尋文字的開始位置

.endpos 正表搜尋文字的結束位置

.group(

0) 獲得匹配後的字元

.start(

) 匹配在原始字串開始的位置

.end(

) 匹配在原始字串結束的位置

.span(

) 返回(.start(),

.end(

))

關於貪婪匹配和最小匹配:

貪婪匹配是匹配並輸出相符的最長字串,而最小匹配可以輸出所有字串

*?   #前乙個字元0次或者無限次無限擴充套件,最小匹配,基礎用的最多的就是  .*?

+? #前乙個字元1次或者無限次無限擴充套件,最小匹配

?? #前乙個字元0次或者1次擴充套件,最小匹配

#擴充套件前乙個字串m次到n次

爬蟲學習筆記 2 正規表示式

在爬蟲學習中,經常會用到正規表示式去匹配網頁源 中的特定字串,例如網頁鏈結,標題等相關資訊。在處理這類問題上,正規表示式可以說是一大利器。當然在python中還有類似的較為簡單的方法處理這類問題,比如beautifulsoup,pyquery,xpath等相應的庫,當這些庫失靈的時候,兜兜轉轉回到最...

爬蟲 正規表示式

正規表示式 regular expression 是一種字串匹配的模式 pattern 它可以檢查乙個字串是否含有某種子串 替換匹配的子串 提取某個字串中匹配的子串。匯入正則模組 importre 字元匹配 rs re.findall abc adc print rs rs re.findall a...

正規表示式學習筆記

正規表示式學習日記 1 為萬用字元,表示任何乙個字元,例如 a.c 可以匹配 anc abc acc 2 在內可以指定要求匹配的字元,例如 a nbc c 可以匹配 anc abc acc 但不可以匹配 ancc a到z可以寫成 a z 0到9可以寫成 0 9 3 數量限定符號,表示匹配次數 或者叫...