Python基礎16模組-re模組
阿新 • • 發佈:2018-11-10
1.正則表示式
#^表示在字串開頭匹配,$表示在字串結尾匹配 #*匹配0到無窮多個 #+匹配1到無窮多個 #?匹配0或者1個 #{}定義匹配個數{0,}==*,{1,}==+,{0,1}==?,{6}=={1,6} #上面的元字元一般都是貪婪匹配,在後面加上?變成惰性匹配 #[]匹配括號裡的字元,只匹配一次,^表示不包含,-表示範圍,\表示轉義字元,其他在中括號裡都無特殊意義 #\d 匹配任何十進位制的數 #\D 匹配任何非數字字元 #\s 匹配任何空白字元 #\S 匹配任何非空白字元 #\w 匹配任何字母數字字元 #\W 匹配任何非字母數字字元 #\b 匹配一個特殊邊界字元,比如空格,#,&#?:去匹配優先順序 import re ret = re.findall("www\.(baidu|163)\.com","www.baidu.com") print(ret) ret = re.findall("www\.(?:baidu|163)\.com","www.baidu.com") print(ret) #結果為:['123', '564'] #注:類似\b由於在python直譯器上會預設轉化,這樣傳到re直譯器上就會有差異,所以在re模組下應該變為\\b或者用r'\b'
2.re模組的方法
#search()匹配一個就返回,返回一個物件,如果匹配不到就不返回,用group()方法呼叫,如果正則表示式用分組形式如(?p<name>[a-z]+)則可用group(name)取出對應分組匹配的內容#match()從開頭開始匹配,匹配一個就返回,返回一個物件,同樣用group()呼叫 #findall()所有符合正則表示式的都匹配,返回一個列表 #split()用正則表示式匹配的字串進行分割,如re.split("[ab]","abc")結果為[" "," ","c"]先按照a分割再對結果按照b分割 #compile()繫結正則表示式 import re com = re.compile("\d+") print(com.findall("fjsdf123eewfwe564sdf")) #結果為:['123', '564'] #finditer()所有符合正則表示式的都匹配,返回一個迭代器import re ret = re.finditer("\d","sdf145dfsdf5456") print(next(ret).group()) print(next(ret).group()) #結果為1 # 4 #sub()將正則表示式匹配的字串替換成指定字串如:re.sub("\d","A","a12f")結果為"aAAf",預設為全部替換,也可指定替換次數,如:re.sub("\d","A","a12f",1)表示只匹配一次,結果為"aA2f" #subn()跟sub()功能一樣,返回的是一個元組,包含結果跟匹配的次數