5-2 正則表達式及其re模塊

一 正則表達式正則表達式

在線測試工具 http://tool.chinaz.com/regex/函數

字符工具

量詞測試

貪婪匹配spa

貪婪匹配:在知足匹配時,匹配儘量長的字符串,默認狀況下,採用貪婪匹配,<.*>code

加上?爲將貪婪匹配模式轉爲非貪婪匹配模式,會匹配儘可能短的字符串<.*?>對象

幾個經常使用的非貪婪匹配Pattern
*? 重複任意次,但儘量少重複
+? 重複1次或更屢次,但儘量少重複
?? 重複0次或1次,但儘量少重複
{n,m}? 重複n到m次,但儘量少重複
{n,}? 重複n次以上,但儘量少重複
.*?的用法. 是任意字符* 是取 0 至 無限長度
? 是非貪婪模式。 合在一塊兒就是 取儘可能少的任意字符,通常不會這麼單獨寫,他大多用在: .*? 就是取前面任意長度的字符,直到一個x出現

二 re模塊
1 findall search match split sub subn等方法
 1 import re
 2 
 3 ret = re.findall('a','abc egon yuan') # 返回全部知足匹配條件的結果,放在列表裏
 4 print(ret) ##結果['a', 'a']
 5 
 6 
 7 ret1 = re.search('\d+','8787abc 97897engo yuan657').group()#函數會在字符串內查找模式匹配,只到找到第一個匹配而後返回一個包含匹配信息的對象,該對象能夠
 8 # 經過調用group()方法獲得匹配的字符串,若是字符串沒有匹配,則返回None。
 9 print(ret1) ##結果 8787  只匹配第一個數字
10 
11 
12 ret3=re.match('\d+','1abc78797 97897engo yuan657').group()# 同search,不過只能在字符串開始處進行匹配
13 print(ret3)
14 # #ret4=re.match('a','bca').group()  ##這種的就會報錯
15 # # print(ret4)
16 
17 ret5=re.split('[ab]','abcd')#先按'a'分割獲得''和'bcd',在對''和'bcd'分別按'b'分割
18 print(ret5) ##結果['', '', 'cd']
19 
20 ret6 = re.sub('\d', 'H', 'eva3egon4yuan4', 1)##將數字替換成'H',參數1表示只替換1個
21 print(ret6)
22 
23 ret7 = re.subn('\d', 'H', 'eva3egon4yuan4')#將數字替換成'H',返回元組(替換的結果,替換了多少次)
24 print(ret7)
25 
26 obj = re.compile('\d{3}')  #將正則表達式編譯成爲一個 正則表達式對象,規則要匹配的是3個數字
27 
28 ret8 = obj.search('abc123eeee') #正則表達式對象調用search,參數爲待匹配的字符串
29 print(ret8.group())
30 
31 ret = re.finditer('\d', 'ds3sy4784a')
32 print(ret)
33 print(ret.__next__().group())
34 print(next(ret).group())
35 
36 #第二種取值方式
37 print([i.group()for i in ret])

二 findall和split優先級blog

 1 ##findall優先級
 2 ret = re.findall('www\.(oldboy|baidu)\.com', 'www.oldboy.com')
 3 ##這是由於findall會優先把匹配結果組裏內容返回,若是想要匹配結果取消優先級
 4 print(ret)##結果是oldboy
 5 
 6 ret = re.findall('www\.(?:baidu|oldboy)\.com', 'www.oldboy.com')
 7 print(ret)  # ['www.oldboy.com']
 8 
 9 ##split優先級查詢
10 ret = re.split("\d+",'eva3egon4yuan')
11 print(ret)
12 
13 ret = re.split('(\d+)','eva3egon4yuan')
14 print(ret)
15 
16 ##在匹配部分加上()以後所切出的結果是不一樣的,
17 #沒有()的沒有保留所匹配的項,可是有()的卻可以保留了匹配的項,
18 #這個在某些須要保留匹配部分的使用過程是很是重要的
相關文章
相關標籤/搜索