MOOC課程學習筆記
課程鏈接:https://www.bilibili.com/video/BV1ME411E7jE?p=1
Re庫主要功能函數
函數 | 功能 | 返回值 |
---|---|---|
re.search() | 在一個字符串中搜索匹配正則表達式的第一個位置 | match對象 |
re.match() | 從一個字符串的開始位置起匹配正則表達式 | match對象 |
re.findall() | 搜索字符串,返回全部能匹配的子串 | list列表 |
re.split() | 將一個字符串按照正則表達式匹配結果進行分割 | list列表 |
re.finditer() | 搜索字符串,返回匹配結果 | 迭代類型,迭代元素是match對象 |
re.sub() | 在一個字符串中替換所有匹配正則表達式的子串 | 替換後的string字符串 |
re.compile() | 將正則表達式的字符串形式編譯成正則表達式對象 | 正則表達式對象 |
實例 (以查找郵政編碼爲例)
search函數
# search函數 向後找第一個符合條件的字符串
match = re.search(r'[1-9]\d{5}','BIT 221745 221746')
if match:
print(match.group(0)) # 輸出 221745
match函數
# match函數 從“第一字符”開始匹配 返回第一個符合條件的字符串
match = re.match(r'[1-9]\d{5}','BIT 221745') # 匹配錯誤,因爲第一個是B而不是[1-9]
match = re.match(r'[1-9]\d{5}','221745 221746 BIT') # 匹配成功
if match:
print(match.group(0)) # 輸出 221745
findall函數
# findall函數 搜索所有符合條件的字符串 以列表形式返回
match = re.findall(r'[1-9]\d{5}','BIT 221745 221746')
print(match) # 輸出 ['221745', '221746']
split函數
# split函數 按照匹配結果進行分割 返回列表類型
# maxsplit:最大分割數,剩餘部分作爲最後一個元素輸出
match = re.split(r'[1-9]\d{5}','ABC 221745 DEF 221746 GHI 221747')
print(match) # 輸出 ['ABC ', ' DEF ', ' GHI ', '']
match = re.split(r'[1-9]\d{5}','ABC 221745 DEF 221746 GHI 221747',maxsplit=1)
print(match) # 輸出 ['ABC ', ' DEF 221746 GHI 221747']
match = re.split(r'[1-9]\d{5}','ABC 221745 DEF 221746 GHI 221747',maxsplit=2)
print(match) # 輸出 ['ABC ', ' DEF ', ' GHI 221747']
finditer函數
# finditer函數 搜索字符串 返回一個匹配結果的迭代類型(match對象)
match = re.finditer(r'[1-9]\d{5}','ABC 221745 DEF 221746 GHI 221747')
for m in match:
if m:
print(m.group(0))
'''
輸出結果:
221745
221746
221747
'''
sub函數
# sub函數 在一個字符串中替換所有匹配正則表達式的子串 返回替換後的子串
# 這個例子中將郵政編碼全部替換成000000
match = re.sub(r'[1-9]\d{5}','000000','ABC 221745 DEF 221746 GHI 221747')
print(match) # 輸出 ABC 000000 DEF 000000 GHI 000000
compile函數
# compile函數 將字符串編譯成正則表達式對象
regex = re.compile(r'[1-9]\d{5}') # 經過一次編譯 可多次對此正則表達式進行使用
match = regex.search('ABC 221745 DEF 221746 GHI 221747')