Python 正則表達式

1、re.match與re.search的區別

   re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配。

例如:

import re

print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配

print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配

以上實例運行輸出結果爲:

(0, 3)
None
import re 
print(re.search('www', 'www.runoob.com').span())  # 在起始位置匹配
print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配

以上實例運行輸出結果爲:

(0, 3)
(11, 14)


2、檢索和替換

sub

Python 的re模塊提供了re.sub用於替換字符串中的匹配項。

語法:

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

#!/usr/bin/python3
import re 
phone = "2004-959-559 # 這是一個電話號碼" 
# 刪除註釋
num = re.sub(r'#.*$', "", phone)
print ("電話號碼 : ", num) 
# 移除非數字的內容
num = re.sub(r'\D', "", phone)
print ("電話號碼 : ", num)

以上實例執行結果如下:

電話號碼 :  2004-959-559 
電話號碼 :  2004959559

findall

在字符串中找到正則表達式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

語法格式爲:

findall(string[, pos[, endpos]])
import re pattern = re.compile(r'\d+')  
# 查找數字
result1 = pattern.findall('runoob 123 google 456')
result2 = pattern.findall('run88oob123google456', 0, 10) 
print(result1)print(result2)

輸出結果:

['123', '456']
['88', '12']


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章