標籤:Python3.6.5 re模組
概述
Regex是一個特殊的字元序列,它常常用於檢查是否與某種模式比對。第八節課主要介紹了從以下幾方面介紹了PythonRegex的用法。
(1)re模組的使用
(2)字元匹配、數量表示、邊界表示
(3)Regex的進階用法
(4)貪婪與非貪婪模式
re模組
(一)match(Regex,待匹配字串)
(1)採用從左向右逐項匹配,從起始位置起。
(2)用於正則匹配檢查,如果“待匹配字串”能夠匹配“Regex”,則match方法返回匹配對象,否則返回None
import re #匯入re模組#從起始位置開始匹配rs = re.match("51cto", "51cto.com") print(rs)#不從起始位置開始匹配rs = re.match("cn", "51cto.com")
運行結果:
<_sre.SRE_Match object at 0x02B33FA8>None
(二)group()方法 :用來返回字串的匹配部分
import rers = re.match("51cto", "51cto.com")print(rs.group())
運行結果:
51cto
字元匹配、數量表示、邊界表示
(一)單字元匹配
(1). 匹配除"\n"之外的任意單個字元
import rers = re.match(".","a")print(rs.group())rs = re.match(".","1")print(rs.group())rs = re.match("...","abc") #多個字元print(rs.group())rs = re.match(".","\n") #\n字元print(rs)
運行結果:
a1abcNone
(2)\s:匹配任意空白字元,如空格,定位字元“\t”,分行符號“\n”
import rers = re.match("\s","\t")print(rs)rs = re.match("\s","\n")print(rs)rs = re.match("\s"," ")print(rs)
(3)\S:匹配任意非Null 字元;和\s模式相反
rs = re.match("\S","\t")print(rs)rs = re.match("\S","abc") #匹配單個字元,從起始位置print(rs.group())
運行結果:
Nonea
其他單字元匹配用法不一一列舉。
(二)數量表示
(1)* 出現次數 n >= 0
import rers = re.match("1\d*", "1234567") #起始是1,後面int出現任意次print(rs.group())rs = re.match("1\d*", "1234567abc") #起始是1,後面int出現任意次print(rs.group())
運行結果:
12345671234567
(三)邊界表示
(1)字串與單詞邊界
(2)匹配分組
Regex的進階用法貪婪與非貪婪模式作業題
奶茶館價格結算系統最佳化:
1、 使用Regex判斷顧客輸入的手機號是否符合手機號設定規則:
1) 以數字 1 開頭
2) 第二位為 3578 中的任一數字
3) 其餘 9 位為 0-9 任一數字
2、 輸出手機號電訊廠商,判斷規則:
? 行動電信業者:手機號前三位為 134、135、136、137、138、139、150、151、152、157、 158、159、178、182、183、184、187、188
? 聯通電訊廠商:手機號前三位為 130、131、132、155、156、176、185、186
? 電信電訊廠商:手機號前三位為 133、153、173、177、180、181、189、199
3、 使用Regex判斷輸入奶茶編號,如果不在 1-5 範圍內,輸出: Woops!我們只售賣以上五種奶茶哦!新口味敬請期待! 並將判斷過程設定為類中的方法。
Python基礎文法 - Regex