python學習 正規表示式

2022-07-05 02:21:07 字數 2851 閱讀 7762

正規表示式

正規表示式的主要作用就是對字串進行匹配,通過匹配,進行篩選,選擇出符合規則的字串。其實正規表示式的作用就像是乙個過濾器一樣。你輸入好自己的條件,通過它去篩選想要獲得的結果。

注意,正規表示式,只能對字串進行匹配。而數字中,每乙個單獨的數字都是乙個字元。

正規表示式的匹配過程

首先我們來看一下正規表示式的匹配過程:

1. 依次拿出表示式和文字中的字元比較。

2. 如果每乙個字元都能匹配,則匹配成功;一旦有匹配不成功的字元則匹配失敗。

3. 如果表示式中有量詞或邊界,這個過程會稍微有一些不同。

正規表示式的元字元和語法規則

注:其實*,+和?都可以使用來代替,跟*是一樣的,跟+是一樣的,和?又是一樣的。不過還是需要,使用到*,+,?;因為這些字元更短,更容易閱讀。而且,匹配引擎是對*,+,?做了優化的,效率會更高一些。

常用的正規表示式

1.驗證使用者名稱和密碼:」^[a-za-z]\w$」

2.驗證**號碼:(」^(\d-)\d$」)

eg:021-68686868  0511-6868686;

3.驗證手機號碼:」^1[3|4|5|7|8][0-9]\d$」;

4.驗證身份證號(15位或18位數字):」\d[[0-9],0-9xx]」;

6.只能輸入由數字和26個英文本母組成的字串:(「^[a-za-z0-9]+$」) ;

7.整數或者小數:^[0-9]+([.][0-9]+)$

8.只能輸入數字:」^[0-9]*$」。

9.只能輸入n位的數字:」^\d$」。

10.只能輸入至少n位的數字:」^\d$」。

11.只能輸入m~n位的數字:」^\d$」。

12.只能輸入零和非零開頭的數字:」^(0|[1-9][0-9]*)$」。

13.只能輸入有兩位小數的正實數:」^[0-9]+(.[0-9])?$」。

14.只能輸入有1~3位小數的正實數:」^[0-9]+(\.[0-9])?$」。

15.只能輸入非零的正整數:」^\+?[1-9][0-9]*$」。

16.只能輸入非零的負整數:」^\-[1-9]0-9″*$。

17.只能輸入長度為3的字元:」^.$」。

18.只能輸入由26個英文本母組成的字串:」^[a-za-z]+$」。

19.只能輸入由26個大寫英文本母組成的字串:」^[a-z]+$」。

20.只能輸入由26個小寫英文本母組成的字串:」^[a-z]+$」。

21.驗證是否含有^%&』,;=?$\」等字元:」[^%&',;=?$\x22]+」。

22.只能輸入漢字:」^[\u4e00-\u9fa5]$」。

23.驗證url:」^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$」。

24.驗證一年的12個月:」^(0?[1-9]|1[0-2])$」正確格式為:」01″~」09″和」10″~」12″。

25.驗證乙個月的31天:」^((0?[1-9])|((1|2)[0-9])|30|31)$」正確格式為;」01″~」09″、」10″~」29″和「30」~「31」。

26.獲取日期正規表示式:\d[年|\-|\.]\d[月|\-|\.]\d日?

評注:可用來匹配大多數年月日資訊。

27.匹配雙位元組字元(包括漢字在內):[^\x00-\xff]

評注:可以用來計算字串的長度(乙個雙位元組字元長度計2,ascii字元計1)

28.匹配空白行的正規表示式:\n\s*\r

評注:可以用來刪除空白行

29.匹配html標記的正規表示式:]*>.*?|<.>

評注:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對於複雜的巢狀標記依舊無能為力

30.匹配首尾空白字元的正規表示式:^\s*|\s*$

評注:可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表示式

評注:網上流傳的版本功能很有限,上面這個基本可以滿足需求

32.匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-za-z][a-za-z0-9_]$

評注:表單驗證時很實用

匹配規則中的注意事項

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

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

2. 反斜槓的困擾

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

使用正規表示式

re模組是python為正規表示式引擎提供的乙個介面。同時,允許你將正規表示式編譯成模式物件,並用它們進行匹配。

Python 正規表示式學習(二)正規表示式語法

一,單一字元匹配 1 匹配任意字元 import re res re.match r a.abcd print res.group 列印結果 abc一點.表示匹配任意的字元。上面的 表示匹配a後面的任意兩個字元。必須從a開始。若寫成 b.則會發生錯誤。2 匹配指定字元 如 0 9a za z 表示 ...

python正規表示式學習

今天學習了python中有關正規表示式的知識。關於正規表示式的語法,不作過多解釋,網上有許多學習的資料。這裡主要介紹python中常用的正 則表示式處理函式。re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import re text jgood is a handso...

python正規表示式學習

python 中的re 模組 正規表示式 就個人而言,主要用它來做一些複雜字串分析,提取想要的資訊 學習原則 夠用就行,需要的時候在深入 現總結如下 正規表示式中特殊的符號 表任意字元 表string起始 表string 結束 跟在字元後面表示,0個 多個,1個 多個,0個或者1個 符合條件的情況下...