1. 程式人生 > >Python基礎16模塊-re模塊

Python基礎16模塊-re模塊

則表達式 不包含 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模塊