首頁 > 軟體

python正規表示式常見的知識點彙總

2022-05-19 13:00:29

一、介紹

正規表示式是一個特殊的字元序列,電腦科學的一個概念。通常被用來檢索、替換那些符合某個模式(規則)的文字。

許多程式設計語言都支援利用正規表示式進行字串操作。在Python中需要通過正規表示式對字串進行匹配的時候,可以使用re模組。re 模組使 Python 語言擁有全部的正規表示式功能。

二、查詢方法的使用

1、match方法(只匹配字串開頭)

re.match嘗試從字串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。如果匹配成功,返回的是一個Match物件,要想獲得其值要呼叫group()方法

group(0)返回的是整個匹配的所有內容(預設為0)

函數語法:

re.match(pattern,string,flags=0)

2、search方法(掃描整個字串,找到第一個匹配)

 re.search 掃描整個字串並返回第一個成功的匹配。

函數語法:

re.search(pattern, string, flags=0)

3、re.match與re.search的區別

 re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函數返回None;而re.search匹配整個字串,直到找到一個匹配。

4、findall方法(掃描整個字串,找到所有的匹配)

在字串中找到正規表示式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

語法格式:

re.findall(pattern,string,flags=0)

範例: 

5、finditer方法(掃描整個字串,找到所有的匹配,並返回一個可迭代物件)

和 findall 類似,在字串中找到正規表示式所匹配的所有子串,並把它們作為一個迭代器返回

ret = re.finditer(r'd+','he23ll34')  # 得到的結果是一個可迭代物件
for x in ret: # 遍歷 ret 取出裡面的每一項匹配
    print(x.group(), x.span()) # 匹配物件裡的group儲存了匹配的結果

三、re.Match類介紹

當我們呼叫re.match方法、re.search方法,或者對re.finditer方法的結果進行迭代時,拿到的資料型別都是re.Match物件。

四、正規表示式模式 

1、非列印字元

 2、特殊字元

 3、定位符

4、限定符

五、替換

語法:

re.sub(pattern,repl,string,count=0)

六、貪婪模式和非貪婪模式 

Python裡數量詞預設是貪婪的(在少數語言裡也可能是預設非貪婪),總是嘗試匹配儘可能多的字元;

非貪婪則相反,總是嘗試匹配儘可能少的字元。

*,?,+,{m,n}後面加上 ?使貪婪變成非貪婪。

七、範例 

1、匹配使用者名稱

使用者名稱匹配:由數位、大小寫字母、下劃線_和中橫線-組成,長度為4到14位元,並且不能以數位開頭。

^在括號外就是開頭,在括號裡就是取反

D匹配一個非數位字元,等價於[^0-9]

[a-z0-9A-Z_-]{3,13}表示可取範圍為a-z的小寫字母和數位0-9以及下劃線中橫線都可以,寫在中括號裡面的是與的關係,最後的大括號代表的是其匹配長度為[3-13](左閉右閉)(因為開頭已經有一位是確定的了,所以後面的長度為[3-13])

r'^D[a-z0-9A-Z_-]{3,13}', 'sH_8'

2、匹配手機號

根據手機號的規則,對手機號前三位的格式進行了限制,因為有幾種格式都可以,條件之間的關係為或,正規表示式中用|表示

r'^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))d{8}$'

3、匹配0~99之間的數位

開頭是【1-9】中的一個數,個數為0或者1均可

後面的是【0-9】中的一個數,個數為0或者1

r'^[1-9]?[0-9]?$'

總結

到此這篇關於python正規表示式常見知識點的文章就介紹到這了,更多相關python正規表示式知識點內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com