Python基礎16模塊-re模塊
阿新 • • 發佈:2018-10-19
則表達式 不包含 re模塊 aaa 一個 compile 會有 字符串 arch
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()功能一樣,返回的是一個元組,包含結果跟匹配的次數
Python基礎16模塊-re模塊