正規表示式描述了一種字串匹配的模式。
a. 資料驗證
驗證手機號,銀行卡號等。
b. 替換文字
正則查詢特定源文字,將其替換為目標文字。
c. 提取子串
從給定字串中提取目標子串。
\s 匹配任何單個空白字元,包括tab鍵和換行符。
\s 匹配任何非空白字元。
\w 匹配包括[a-za-z0-9_]。(大小寫英文本母、數字、下劃線)
\w 匹配任何非\w中的字元。(除了大小寫英文本母、陣列、下劃線之外的特殊字元)
\d 匹配包括[0-9]的數字。
\d 匹配任何非\d的數字。
a. 特殊字元
$ 匹配字串的結束位置,若設定了匹配的多行屬性,$也匹配\n,\r。
^ 匹配字串的開始位置。
() 標記子表示式的開始和結束。
+ 匹配前面的子表示式1次或多次。
* 匹配前面的子表示式0次或多次。
? 匹配前面的子表示式0次或1次。
. 匹配除了換行符\n之外的任意單字元。
| 標記兩項之間的選擇。
[ 方括號表示式的開始標記。
準確匹配,匹配前面的子表示式n次。
匹配前面的子表示式至少n次。
匹配前面的子表示式,至少n次,至多m次。
*和+限定符都是貪婪的,它們盡可能多的匹配字元。只有在它們後面加乙個?,就能實現非貪婪或最小匹配。
例:對於正則 [a-z]+,若對字串abcde匹配,則會盡可能匹配最長的結果,即貪婪匹配,匹配結果為:abcde。若是對abcde使用正則[a-z]+?匹配,則會匹配最短滿足條件的結果,為a
c. 定位符
$ 標記字串的開始。
^ 標記字串的結尾。
\b 匹配乙個單詞的邊界。即單詞與空格之間的位置。
例如:/\bhel/ 可以匹配 "hello world",但是不能匹配"haahel world",因為hel需要出現在單詞的開頭。
/hel\b/ 無法匹配"hello world",但是可以匹配"ollhel world",因為hel需要出現在單詞的末尾。
\b 匹配非單詞的邊界。
例如:/\bhel/ 可以匹配 "haahelooo world",也可以匹配 "ooohelhello world",但是不能匹配"hello world",因為hel匹配單詞的非邊界。
因此,\b非單詞邊界運算子,與位置無關,匹配不關心是在單詞的開頭還是結尾。
用圓括號將一些項括起來,相鄰選擇項之間用 | 分隔。但是使用圓括號有乙個缺點,就是相關的匹配會被快取,此時可以用?:加在第乙個選項的前面,從而消除這種***。
例如:匹配aaba格式的字串,且將a提取出來,定義正則="(\w)\1(?:\w)\1",可以滿足要求。
就是對前面出現的分組進行再一次引用。反向引用最有用的應用就是匹配字串中重複出現的內容。
例如:匹配aa形式的字串,定義正則="(\w)\1",使用反向表示式\1表示引用前面的子表示式\w,而不用重複寫,尤其在正規表示式比較繁雜的時候更有效。
re.compile(pattern, flags)可以編譯正規表示式,其中flags是如下一些常量引數,如果要設定多個,可以用|分隔,例如:re.compile(r"^abc(\d)898$", re.i|re.m),表示不區分大小寫,並且採用多行匹配。
r 表示原字串的意思,不用加轉義字元。
re.i ignorecase,表示不區分大小寫。
re.m multiline,表示多行匹配。
(pattern) 捕獲組,表示匹配pattern並且捕獲匹配結果。
(?:pattern) 非捕獲組,匹配pattern但是不需要捕獲匹配結果。消耗字元。
(?=pattern) 非捕獲組,正向肯定預查。lookahead,在任何匹配pattern的字串開始處匹配查詢字串,匹配結果不儲存,預查不消耗字元。
例:hello(?=world) 的意思是:匹配hello,且後面緊跟的是world。
(?!pattern) 非捕獲組,正向否定預查。lookahead,在任何不匹配pattern的字串開始處匹配查詢字串,匹配結果不儲存,預查不消耗字元。
例:[0-9a-z](?!aa) 的意思是:匹配2個字元,且後面緊跟的不是aa。
例:a(?!a) 的意思是:匹配a,且a後面跟的不是a。
(?<=pattern) 非捕獲組,反向肯定預查。lookbehind,與正向肯定預查類似,只是方向相反。pattern中不能有+,*等不定長度的量詞。預查不消耗字元。
例:(?<=hello)world 的意思是:匹配world,且world前面是hello。
(?lookbehind,與正向否定預查類似,只是方向相反。pattern中不能有+,*等不定長度的量詞。預查不消耗字元。
例:(?
a. 檢測密碼強度
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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...