python 包之 re 正則匹配教程
阿新 • • 發佈:2022-04-10
一、開頭匹配
-
從字串開頭開始匹配
-
返回匹配物件;如果找不到匹配,則為None
import re
print(re.match('飛兔小哥', '飛兔小哥教你零基礎學程式設計'))
print(re.match('學程式設計', '飛兔小哥教你零基礎學程式設計'))
二、全匹配
-
匹配字串是否和給定的字元一模一樣
-
如果一模一樣才返回匹配物件,如果找不到匹配,則為None
import re print(re.fullmatch('飛兔小哥教你零基礎學程式設計', '飛兔小哥教你零基礎學程式設計')) print(re.fullmatch('飛兔小哥', '飛兔小哥教你零基礎學程式設計'))
三、部分匹配
-
只要在字串中找到字元存在即可
-
找到返回匹配物件,如果找不到匹配,則為None
import re
print(re.search('autofelix', '飛兔小哥教你零基礎學程式設計'))
print(re.search('飛兔小哥', '飛兔小哥教你零基礎學程式設計'))
四、匹配替換
-
用正則表示式去匹配原始字串,並把匹配到的內容替換
import re
# 去掉電話號碼中的-
num = re.sub(r'\D', '', '188-1926-8053')
print(num)
# 18819268053
五、匹配替換返回數量
-
用正則表示式去匹配原始字串,並把匹配到的內容替換
-
並且返回被替換掉的數量
import re
# 去掉電話號碼中的-
num = re.subn(r'\D', '', '188-1926-8053')
print(num)
# (18819268053, 2)
六、分割字串
-
按照正則表示式的規則來分割字串,並返回列表
-
可以規定分割的次數
import re print(re.split('a*', 'hello world')) # ['', 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', ''] print(re.split('a*', 'hello world', 1)) # ['', 'hello world']
七、匹配所有
-
在字串中匹配所有符合正則表示式的物件
-
並把這些物件通過列表list的形式返回
import re
pattern = re.compile(r'\W+')
result1 = pattern.findall('hello world!')
result2 = pattern.findall('hello world!', 0, 7)
print(result1)
# [' ', '!']
print(result2)
# [' ']
八、迭代器匹配
-
在字串中匹配所有符合正則表示式的物件
-
並把這些物件通過迭代器的形式返回
import re
pattern = re.compile(r'\W+')
result = pattern.finditer('hello world!')
for r in result:
print(r)
九、編譯物件
-
把正則表示式編譯成Pattern物件
import re
pattern = re.compile(r'\W+')
十、修飾符
-
re.I:忽略大小寫
-
re.L:本地化識別匹配
-
re.M:多行匹配
-
re.S:使.匹配包括換行在內的所有字元
-
re.U:根據unicode字元解析字元
-
re.X:給予靈活的格式以便理解
import re
content = "Cats are smarter than dogs"
print(re.search(r'DOGS', content, re.M | re.I))