Python正則表達式難?學不會?請看這裏!

2020-08-10 11:36:25

Python正則表達式難?學不會?請看這裏!本文爲您介紹 PythonPython正則表達式。包括正則表達式基礎以及Python正則表達式標準庫的完整介紹及使用範例。

PyCharm pro for Mac(Python開發工具)

1. 正則表達式基礎

1.1. 簡單介紹

正則表達式並不是Python的一部分。正則表達式是用於處理字串的強大工具,擁有自己獨特的語法以及一個獨立的處理引擎,效率上可能不如str自帶的方法,但功能十分強大。得益於這一點,在提供了正則表達式的語言裡,正則表達式的語法都是一樣的,區別只在於不同的程式語言實現支援的語法數量不同;但不用擔心,不被支援的語法通常是不常用的部分。如果已經在其他語言裡使用過正則表達式,只需要簡單看一看就可以上手了。

下圖展示了使用正則表達式進行匹配的流程:

正則表達式的大致匹配過程是:依次拿出表達式和文字中的字元比較,如果每一個字元都能匹配,則匹配成功;一旦有匹配不成功的字元則匹配失敗。如果表達式中有量詞或邊界,這個過程會稍微有一些不同,但也是很好理解的,看下圖中的範例以及自己多使用幾次就能明白。

下圖列出了Python支援的正則表達式元字元和語法:

1.2. 數量詞的貪婪模式與非貪婪模式

正則表達式通常用於在文字中查詢匹配的字串。Python裡數量詞預設是貪婪的(在少數語言裡也可能是預設非貪婪),總是嘗試匹配儘可能多的字元;非貪婪的則相反,總是嘗試匹配儘可能少的字元。例如:正則表達式"ab"如果用於查詢"abbbc",將找到"abbb"。而如果使用非貪婪的數量詞"ab?",將找到"a"。

1.3. 反斜槓的困擾

與大多數程式語言相同,正則表達式裡使用""作爲跳脫字元,這就可能造成反斜槓困擾。假如你需要匹配文字中的字元"",那麼使用程式語言表示的正則表達式裡將需要4個反斜槓"\\":前兩個和後兩個分別用於在程式語言裡跳脫成反斜槓,轉換成兩個反斜槓後再在正則表達式裡跳脫成一個反斜槓。Python裡的原生字串很好地解決了這個問題,這個例子中的正則表達式可以使用r"\"表示。同樣,匹配一個數字的"\d"可以寫成r"\d"。有了原生字串,你再也不用擔心是不是漏寫了反斜槓,寫出來的表達式也更直觀。

1.4. 匹配模式

正則表達式提供了一些可用的匹配模式,比如忽略大小寫、多行匹配等等。