1. 程式人生 > >正在總結2之正在模組函式

正在總結2之正在模組函式

 

re.match(r"a","")                                                           #r表示元字元
re.match(r"a","abc")                                                      #match從字串起始為匹配,開始匹配則為匹配,否則不匹配
re.match(r".","a\nbc")                                                   #點.表示匹配任意非\n的字元
re.match(r"...","a\nbc")                                                 #多個點表示匹配多個連續的非\n字元,如果不滿足連續多個非\n字元,則不匹配
re.match(r"...","a\nbc",re.DOTALL)                              #re.DOTALL表示把點變成可以匹配任意字元(包含\n)
re.match(r"[abc]","btcd")                                              #[]表示開始位置匹配中括號內任意一個字元就算匹配成功
re.match(r"[^abc]","cbds")                                            #^在中括號內表示開始位置不能匹配到中括號內的任意一個字元才算匹配成功
re.search(r"^abc","dabc").group()                                #^在中括號外表示開始位置能匹配到字串abc才算匹配成功
re.search(r"^abc","abchdhd").group()                             #^在中括號外表示開始位置能匹配到字串abc才算匹配成功
re.search(r"^abc","abfc").group()                                  #^在中括號外表示開始位置能匹配到字串abc才算匹配成功
re.findall(r"\d+","1wde234rg5545")                                #匹配出所有的單個或連續數字
re.findall(r"\d+[a-z]+","123abc524rrf")                              #findall()函式時,如果有()分組,只會匹配()內的內容,無()的不生效
re.findall(r"\d+([a-z]+)","123abc524rrf")                             #findall()函式時,如果有()分組,只會匹配()內的內容,無()的不生效
re.search(r"^Word$","Word")                                            #匹配指定字串,被匹配的字串不能多也不能少才能匹配
re.search(r"\AWord\Z","Word")                                         #匹配指定字串,被匹配的字串不能多也不能少才能匹配與上面等價的
re.findall(r"[a-z]+$","ab\ncd\nef\n",re.M)                            #匹配多行末尾是否匹配
re.sub(r"\d+","|","123test345goood")                                 #替換,模糊替換
re.sub(r"\d+","|","123test345goood",1)                              #替換,模糊替換
re.subn(r"\d+","|","123test345goood")                                #替換,模糊替換,返回替換後的結果和替換次數的元組
re.subn(r"\d+","|","123test345goood",1)                              #替換,模糊替換,返回替換後的結果和替換次數的元組
#########引用###########
re.search(r"(?<=abc)\d+","abc520")                                      #表示匹配abc後面的數字,(?<=abc)作為一個開頭引用條件
re.search(r"\d+(?=bb)","abc510bb")                                      #表示匹配後面連線bb的數字,(?=bb)作為一個結尾引用條件
re.search(r"(?<=abc)(\d+)(?=bb)","abc520bb")                     #表示匹配已abc開頭,bb結尾的數字,abc與bb作為一個引用條件,不作匹配
#####否的引用#########
re.search(r"(?<!abc)\d+","abc520")                                        #表示匹配不是abc後面的數字,(?<!abc)作為一個否定開頭引用條件
re.search(r"\d+(?!bb)","abc510bb")                                         #表示匹配後面連線不是bb的數字,(?!bb)作為一個否定結尾引用條件
re.search(r"(?<!abc)(\d+)(?!bb)","abc520bb")                          #表示匹配不是abc開頭,且不是bb結尾的數字,abc與bb作為一個否的引用條件,不作匹配
re.search(r"\d+","abc123\nde23\n",re.I|re.M|re.S)                   #多種模式用|連線

 

 re.search(r"(\d+)([a-z]+)(\d+)","123derr455dee").group(0) 

 #.group()與.group(0)都表示返回所有匹配的值,.group(1)表示左邊第一個括號內\d+匹配的值,
.group(2)表示左邊第二個括號內[a-z]+匹配的值,以此類推

num=re.compile(r"\d+")                                                       #表示把匹配(r"\d+")規則賦值給num物件,可以直接num.search("asd23dde4d3")使用匹配
等價re.search(r"\d+","asd23dde4d3")