Python進階——re模組
阿新 • • 發佈:2018-11-06
1.首先匯入re模組
import re
(1) re.match()函式對字串的
從字串的開頭進行匹配
用法: re.match(pattern,string)
import re
pat="\d+"
s="abc123abc123456"
print(re.match(pat,s))
輸出結果為:None
因為re.match()函式只匹配開頭,字串s的開頭不是數字,所以返回值為None
(2) re.search()函式
與re.match()函式不同,re.search()函式會用正則表示式取匹配字串的所有子串,如果找到,返回第一個匹配對應的Match物件,否則返回None:
search=re.search(pat,s)
print(search.group(0))
輸出結果為:123
(3) re.split()函式
re.split()函式使用指定的正則表示式最為分割符,對字串進行分割,其用法為:
re.split(pattern,string[, maxsplit])
t=re.split(" +","a b c d e") # 用一個或多個空格來把這些字元分開
print(t)
輸出結果為:['a', 'b', 'c', 'd', 'e']
(4) re.sub()函式
re.sub()函式對字串中正則表示式所匹配的部分進行替換,其方法為:re.sub(pattern,repl,string[,count])
t=re.sub(" +",";","a b c d e")
print(t)
輸出的結果為:a;b;c;d;e
(5) re.findall()函式
re.findall()函式返回一個包含所有匹配Match物件的列表
3.方法.group()的使用
s='hello world'
p='hello (\w+)'
m=re.match(p,s)
print(m)
輸出結果為:<_sre.SRE_Match object; span=(0, 11), match='hello world'>
print(m.group(0)) 輸出結果為:hello world print(m.group(1)) #獲取第一個括號中的匹配結果 world
Match 物件的.group(0)方法返回匹配的整個字串,之後的1,2,3等返回的是正則表示式中每個括號匹配的部分。
可以用.groups() 檢視每個括號的匹配值
print(m.groups())
輸出結果為:('world',)
多個括號的情況
s='hello world san'
p='hello (\w+) (\w+)'
m=re.match(p,s)
print(m.groups())
輸出結果為:('world', 'san')
print(m .group(2))
輸出結果為:san
4.不需要轉義的字元
在正則表示式中,“\”來匹配一個反斜槓,在python 中,字串本身對反斜槓也是有轉義的,因此“\“會被先轉義為單個反斜槓:
print('\\')
輸出結果為: \
因此在正則表示式中要使用反斜槓要使用四個反斜槓:
print('\\\\')
輸出結果為:\\
這樣看起來不是很方便,Python提供了不轉義字串來解決這個問題。不轉義字串的構造十分簡單,只需要在普通字串加上r,表示它是一個不轉義的字串。
t=re.split(r"\\",r"C:\foo\baz.txt")
print(t)
輸出結果為:['C:', 'foo', 'baz.txt']