python爬蟲學習筆記五:Re庫的介紹和使用
阿新 • • 發佈:2018-11-25
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'