比如說我們要在乙個檔案中搜尋以什麼開頭、以什麼結尾或者包含什麼的句子,這時候正規表示式是幫助我們來實現這些功能的東西。
正規表示式是乙個特殊的字串行,它能幫助你方便的檢查乙個字串是否與某種模式匹配。
普通字元就是指字母、數字、漢字、下劃線、以及沒有特殊定義的符號。在正規表示式中,普通字元在匹配的時候只匹配與自身相同的乙個字元。
一些具有特殊功能的字元,採用在前面加反斜槓進行轉義,如. * ?這種有特殊含義直接打出來不能表達為三個字元,我們可以將其打為\. \* \?
正規表示式中使用了很多元字元,用來表示一些特殊的含義或功能。
表示式匹配
.小數點可以匹配除了換行符\n以外的任意乙個字元 比如a.c可以匹配abc
|邏輯或操作符 比如(a
匹配字符集中的乙個字元 比如[abc]d匹配ad或者bd或者cd
[^]對字符集求反,也就是上面的反操作。尖號必須在方括號裡的最前面 比如[^abc]匹配a,b,c之外的任意乙個字元
-定義裡的乙個字元區間,比如[a-g]匹配a到g中任意乙個字元
\對緊跟其後的乙個字元進行轉義
()對表示式進行分組,將圓括號內的內容當做乙個整體,並獲得匹配的值
表示式重複n次,比如\d相當於\d\d,a相當於aaa
表示式至少重複m次,最多重複n次。比如ab可以匹配ab或abb或abbb
表示式至少重複m次,比如\w\d可以匹配a12,_1111,m123等等
?匹配表示式0次或者1次,相當於,比如a[cd]?可以匹配a,ac,ad
+表示式至少出現1次,相當於,比如a+b可以匹配ab,aab,aaab等等
*表示式出現0次到任意次,相當於,比如\^*b可以匹配b,^^b等等
^在字串開始的地方匹配,符號本身不匹配任何字元
$在字串結束的地方匹配,符號本身不匹配任何字元
\b匹配乙個單詞邊界,也就是單詞和空格之間的位置,符號本身不匹配任何字元
\b匹配非單詞邊界,即左右兩邊都是\w範圍或者左右兩邊都不是\w範圍時的字元縫隙
表示式匹配
\d任意乙個數字,0~9 中的任意乙個
\w任意乙個字母或數字或下劃線,也就是 a-z,a-z,0-9,_ 中的任意乙個
\s空格、製表符、換頁符等空白字元的其中任意乙個
\d\d的反集,也就是非數字的任意乙個字元,等同於[^\d]
\w\w的反集,也就是[^\w]
\s\s的反集,也就是[^\s]
在重複匹配時,正規表示式預設總是往多的匹配,這被稱為貪婪模式。比如,針對文字a***a***a,表示式(a)(\w+)(a)中的\w+將匹配第乙個a和最後乙個a之間的所有字元***a***。可見,\w+在匹配的時候,總是盡可能多的匹配符合它規則的字元。
但是有時候這種模式獲得的結果並不是我們想要的,這時在修飾匹配次數的特殊符號後再加上乙個?,則可以使匹配次數不定的表示式盡可能少的匹配。
功能表示式
數字^[0-9]*$
n位的數字
^\d$
至少n位的數字
^\d$
零和非零開頭的數字
`^(0 [1-9][0-9]*)$`
有n位小數的正實數
^[0-9]+(.[0-9])?$
非零的負整數
^-[1-9]\d*$
非負浮點數
^\d+(.\d+)?$
浮點數^(-?\d+)(.\d+)?$
日期格式
^\d-\d-\d
email位址
^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
空白行\n\s*\r (可以用來刪除空白行)
python正規表示式元字元 正規表示式
字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
Python 正規表示式
1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...
Python正規表示式
學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...