Python 學習(3)——re模組
最近也用到了重新模組,內嵌的重新模組提供了正則表示式相關的功能。傳說中,正則表示式模式被編譯成一系列的位元組碼,然後由用Ç編寫的匹配引擎執行。
常用的方法如下:
模式:匹配的正則表達是
串:要匹配的字串
國旗:標識位
1:re.match(pattern,string,flags = 0)
從字串的起始位置進行匹配,如果不是起始位置匹配成功的話,匹配()就返回無。如果匹配成功,則返回的應該是MatchObject,MatchObject還有一系列方法,後面介紹
2:re.search(pattern,string,flags = 0)
掃描整個字串,並返回第一個成功的匹配,否則返回無。匹配成功,返回的是
3:re.sub(pattern,repl,string,count = 0,flags = 0)替換字串中的匹配項。
REPL:替換的字串,也可以為一個函式(可以為函式名稱,呼叫函式,對匹配的內容進行處理),返回的是替換後的字元
count:模式匹配後替換的最大次數,預設0表示替換所有的匹配
4:re.compile(pattern [,flags])// flags:可選
用於編譯正則表示式,生成一個正則表示式(Pattern)物件,供match()和search(),findall這兩個函式使用。
例如:pattern = re.compile(r'\ d +')
m = pattern.match('one12twothree34four')
5:re.findall(string [,pos [,endpos]])
在字串中找到正則表示式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。
也可以先進行編譯,然後pattern.findall()方式呼叫
6:re.finditer(pattern,string,flags = 0)
和findall類似,在字串中找到正則表示式所匹配的所有子串,並把它們作為一個迭代器返回。
7:re.split(pattern,string [,maxsplit = 0,flags = 0])// maxsplit分隔次數,maxsplit = 1分隔一次,預設為0,不限制次數
按照能夠匹配的子串將字串分割後返回列表
例如:
string_test =“123234567890”
pattern = '23'
match = re.split(pattern,string_test)
輸出的結果為['1','4567890']
8: MatchObject的屬性和方法
方法/屬性 | 作用 |
group() | 返回被 RE 匹配的字串 |
start() | 返回匹配開始的位置 |
end() | 返回匹配結束的位置 |
span() | 返回一個元組包含匹配 (開始,結束) 的位置 |
9: flags 可選標誌
修飾符 | 描述 |
---|---|
re.I | 使匹配對大小寫不敏感 |
re.L | 做本地化識別(locale-aware)匹配 |
re.M | 多行匹配,影響 ^ 和 $ |
re.S | 使 . 匹配包括換行在內的所有字元 |
re.U | 根據Unicode字符集解析字元。這個標誌影響 \w, \W, \b, \B. |
re.X | 該標誌通過給予你更靈活的格式以便你將正則表示式寫得更易於理解。 |
10: 正則表示式模式匹配規則
有很多匹配規則,下面列出常用的內容:
*: 匹配0個或者多個
+:匹配1個或者多個
?:匹配0個或者1個
():括號內的表示式,表示一個組,匹配的時候,findall的時候,會返回()中的內容