python(十三)正則表達式

1,基本使用正則表達式

Python中的 re 模塊提供了對正則表達式的支持。若是你還對正則表達式的語法不熟悉的話請先去熟悉這一部份內容,這裏不作過多解釋。下面經過簡單的案例來講明。編程

案例一:匹配座機號網絡

經過上面這個簡單的案例能夠得出:函數

Python中正則表達式的模式串須要使用 "r" 前綴,相似於在Python中若是要使用 Unicode 編碼的時候須要加上 "u" 前綴同樣編碼

re 模塊的 match 方法能夠用來執行一個正則匹配,當匹配成功的時候返回一個 Match 對象,當失敗的時候返回 Nonespa

因爲當 match 匹配失敗後會返回 None,所以,一般咱們能夠這樣判斷:
code

那這裏只是使用一個簡單的案例來講明正則表達式在Python中的使用方式。使用方法很簡單,難的是怎麼編寫出複雜並且功能強大的正則表達式模式串,所以,若是你對正則的語法屬性,那麼就能夠藉助 re 模塊中的 match 或者其它方法來實現一些更加複雜的字符串操做功能!對象

固然了,對於 match 匹配成功返回的 Match 對象,該對象還提供一些其它的方法能夠用來獲取匹配到的字符串的信息,下面以一個簡單的分組說明一下。字符串

案例二:分組匹配網絡編程

2,編譯正則表達式

當咱們使用Python中的正則表達式的時候,re 模塊內部會作兩件事情:

首先,編譯正則表達式模式字符串,若是正則表達式模式字符串自己不合法,那麼會報錯。

而後,使用編譯後的正則表達式去執行匹配。

所以,若是一個正則表達式可能會被使用屢次,那麼應該提早對它進行編譯。

編譯正則表達式模式字符串可使用 re 模塊中的 compile 函數,以下:

3,關於貪婪匹配的問題

正則表達式的匹配模式有貪婪模式和非貪婪模式。默認狀況下,正則表達式是處於貪婪模式的!

在貪婪模式下,正則表達式會盡量多的去匹配給定字符串中的內容,而在非貪婪模式下則相反。

以下舉例,在貪婪模式下執行的匹配不符合預期:

因爲前面的模式 「\d+」處於貪婪模式下,所以會盡量多的去執行匹配,那麼後面的「0」就不可以被第二個分組捕捉到,所以,在這種狀況下須要消除貪婪模式。

消除貪婪模式的方法就是在不但願執行貪婪匹配的模式串後面增長一個「?」來執行最小匹配,以下:

-------------------------------------------------這是一條分割線--------------------------------------------

網絡編程開啓!

相關文章
相關標籤/搜索