正規表示式
正規表示式的主要作用就是對字串進行匹配,通過匹配,進行篩選,選擇出符合規則的字串。其實正規表示式的作用就像是乙個過濾器一樣。你輸入好自己的條件,通過它去篩選想要獲得的結果。
注意,正規表示式,只能對字串進行匹配。而數字中,每乙個單獨的數字都是乙個字元。
正規表示式的匹配過程
首先我們來看一下正規表示式的匹配過程:
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個 符合條件的情況下...