re模塊<正則表達式>:(給字符串進行模式匹配)python
元字符: . ^ $ * + ?{} [] () \正則表達式
1 . :除了換行符其餘都可用.代替(一個點表明一個字符,不能表明多個)ide
2 ^ :以...開頭spa
3 $ :以...結尾code
4 * :以緊挨着*的字符匹配,重複匹配[0,+∞]【貪婪匹配:儘量多的去匹配】對象
5 + :以緊挨着+的字符匹配,重複匹配[1,+∞]blog
1 re.findall("ahxb*","dasjbahx")---->['ale'] 2 re.findall("ahcb+",'fgjahx')-----[] 3 re.findall("ahxb+","fhsdkjlfahxb")--->['ahxb']
6? :匹配[0,1]次內存
------- 注:*?【惰性匹配,按最小次數進行匹配】字符串
7 {} :{0,}==*;{0,1}==?;{1,}==+;{6}-->重複6次;{1,6}-->重複1~6次【貪婪匹配】it
8 [] :字符集[括號中無特殊符號] 特例:①"q[a-z]"可匹配a-z的字符 ②"q[^a-z]"可匹配除a-z以外的其餘字符③ \
1 \d:匹配十進制數字 2 \D:匹配任何非數字 3 \s:匹配任何非空白字符 4 \S:匹配任何非空白字符 5 \w:匹配任何字母數字 6 \W:匹配任何非字母數字 7 \b:特殊字符串邊界 空格、#、&等
1 re.findall(r"I\b","I am ann") #r:不作任何轉義送給re模塊進行處理
2 ★re.findall("c\\\\l")--->python解釋器和re解釋器雙層解釋 python解釋器將\\\\解釋爲\\,re解釋器將\\解釋爲\---->結果爲c\l
9: |
re.findall(r"ka|b","sdjasklnka|bs")#--->['ka','b']
10: ():分組以後優先給出括號裏面的內容
re.findall("(abc)+","abcabcabc")#--->雖然匹配的是abcabcabc 可是括號裏面的(abc)優先被給出即輸出結果爲['abc']
re.findall("www\.(baidi|123)\.com","www.baidi.com")#['baidu']-->括號裏面的內容優先被給出 即baidu
re.findall("(?:abc)+","abcabcabc")#-->輸出結果:['abcabcabc'] #--->在括號裏面開頭加上?:
re.findall("www\.(?:baidu|123)\.com","www.baidu.com")-->['www.baidu.com']
re模塊方法:
re.search("[a-z]+","adk456dasjc12").group()#search僅尋找一條信息,並返回 'adk'
re.search("(?P<name>[a-z]+)\d+","dhk12fshdkfnl89").group()#--->'dhk12'
re.search("(?P<name>[a-z]+)\d+","dhk12fshdkfnl89").group("name")#--->'dhk'
re.search("(?P<name>[a-z]+)(?P<age>\d+)","ahd12d9").group("age")-->'12' re.match("\d+","56aq").group()#從開始進行匹配,若不匹配則不返回結果
★★re.split("[ab]","ahccdbh")#--->' ','hccd','h'
re.sub("\d+","A","jaak123ahh5")#--->jaakAAAahhA
re.sub("\d+","A","jaak123ahh5",2)#--->jaakAA3ahh5【2是指匹配前兩個】
--->(可用屢次)com=re.compile("\d+") com.findall("fah12dsj9fd")#--->['12','9']
★★re.finditer("\d","fshd56fsdgy78fs")#-->此方法是將結果封裝到迭代器裏面返回迭代器對象 數據大、結果多能夠使用,用一條處理一條,不會將所有的結果一次性加載到內存裏
ret=re.finditer("\d","sasdh45sds89sd6m")
next(ret).group()--->'45'
next(ret).group()--->'89'
#計算"12+(45*9-(2+1)+5*24)"
方法一: print(eval("12+(45*9-(2+1)+5*24)")) 方法二:(正則表達式匹配最裏面括號 即最早計算的括號) import re re.findall("\([^()*]\)","12+(45*9-(2+1)+5*24)")#---》['2+1'] #\(--->以(開頭 由於在[]中 ()有意義,因此需轉化爲普通的() #^()--->沒有以()開頭的 即最裏面層 #*--->匹配最裏面括號裏面的內容 #\)---> 以)結尾