1. 程式人生 > >python爬蟲學習筆記五:Re庫的介紹和使用

python爬蟲學習筆記五:Re庫的介紹和使用

Re庫介紹

Re庫是Python的標準庫,主要用於字串匹配。

呼叫方式:

import re

正則表示式的表示型別

*raw string 型別(原生字串型別)

re庫採用raw string型別表示正則表示式,表示為:r'text'

例如:r'[1-9]\d{5}'

r'\d{3}-\d{8}|\d{4}-\d{7}'

raw string是不包含轉義符的字串

*string型別,更繁瑣。要加轉義符

例如:[1-9]\\d{5}" 其中第一個\為轉義符

 

                                                            Re庫主要功能函式

函式 說明
re.search() 在一個字串中搜索匹配正則表示式的第一個位置,返回match物件(找到符合表示式的第一個字串後終止)
re.match() 從一個字串的開始位置起匹配正則表示式,返回match物件(從第一個字元匹配、匹配一個終止)
re.findall() 搜尋字串,以列表型別返回全部能匹配的子串(匹配到第一個後第一個所有的字串不會再次參與匹配)
re.split() 將一個字串按照正則表示式匹配結果進行分割,返回列表型別
re.finditer() 搜尋字串,返回一個匹配結果的迭代型別,每個迭代元素是match物件
re.sub() 在一個字串中替換所有匹配正則表示式的子串,返回替換後的字串

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

*在一個字串中搜索匹配正則表示式的第一個位置,返回match物件。

·pattern:正則表示式的字串或原生字串表示

·string:待匹配字串

·flags:正則表示式使用時的控制標記

                                             flags:正則表示式使用時的控制標記

常用標記 說明
re.I  re.IGNORECASE 忽略正則表示式的大小寫,[A-Z]能夠匹配小寫字元
re.M re.MULTILINE 正則表示式中的^操作符能夠將給定字串的每行當作匹配開始
re.S re.DOTALL 正則表示式中的.操作符能夠匹配所有字元,預設匹配除換行外的所有字元
>>> import re
>>> match=re.search(r'[1-9]\d{5}','BIT 1000812')
>>> if match:
	print(match.group(0))

100081
>>> 

re.split(pattern,string,maxsplit=0,flags=0)

*將一個字串按照正則表示式匹配結果進行分割,返回列表型別

pattern:正則表示式的字串或原生字串表示

string:待匹配字串

maxsplit:最大分割數、剩餘部分作為最後一個元素輸出

flags:正則表示式使用時的控制標記

>>> import re
>>> re.split(r'[1-9]\d{5}','BIT100081  tsss1000844')
['BIT', '  tsss', '4']
>>> re.split(r'[1-9]\d{5}','BIT100081  tsss1000844',maxsplit=1)
['BIT', '  tsss1000844']
>>> re.split(r'[1-9]\d{5}','BIT100081  tsss1000844',maxsplit=2)
['BIT', '  tsss', '4']

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

*搜尋字串,返回一個匹配結果的迭代型別,每個迭代元素是match物件。

·pattern:正則表示式的字串或原生字串表示

·string:待匹配字串

·flags:正則表示式使用時的控制標記

>>> import re
>>> for m in re.finditer(r'[1-9]\d{5}','BTI100081 tsu100084'):
	if m:
		print(m.group(0))

100081
100084

re.sub(pattern,repl,string,count=0,flags=0)

*在一個字串中替換所有匹配正則表示式的子串,返回替換後的字串。

·pattern:正則表示式的字串或原生字串表示

·repl:替換匹配字串的字串

·string:待匹配字串

count:匹配的最大替換次數

·flags:正則表示式使用時的控制標記

>>> import re
>>> re.sub(r'[1-9]\d{5}',':zipcode','BIT100081 tsu100084')
'BIT:zipcode tsu:zipcode'