正則是一門獨立的語法,與python沒有關係
正規表示式就是設定好規則,來處理字串,語法包含元字元,量詞,特殊方法和現象
1,元字元:
字元組: [^] | ()
在同一位置可能出現的各種字元組成的字元組,在正規表示式中用表示,注意只能判斷乙個位置的字元,中的內容,依據ascii表中的順訊,從小到大排列
[0-9] 找到字串中的數字 [a-z]找到字串中的小寫字母[a-z]找到字串中的大寫字母[0-9a-za-z]表示16進製字元
[^..]匹配除了字元組中字元的所有字元 [...]匹配字元組中的字元 a|b 匹配a或b ()匹配括號內的表示式,也表示乙個組
\w \d \s(\n,\t) \w \d \s :
\w 匹配字元中的數字,字母,下劃線 \w 匹配非數字,非字母,非下劃線
\d 匹配數字 \d 匹配非數字
\s 匹配空百符, 回車,空格,tab \s 匹配非空格,非回車,非tab
^ $:
^ 匹配字串的開始 $ 匹配字串的結尾
. :
. 匹配出換行符以外的任意字元
2,量詞:
? + *
? 重複0次或1次 + 重複1次或多次 * 重複0次或多次
重複n次 重複n次或多次 重複n到m次
常用的組合用法:
(1)高. ===>匹配所有 高x ^高 ===> 只從開頭匹配 高x 高$ ===> 只從末尾匹配 高x
(2) 高.? ===>先取高,再取乙個字元0次(不取)或取1次 高.+ ===>先取高,再取乙個字元(至少一次)或取多次 高.* ==>先取高,再取乙個字元0次(不取)或多次
高. ==> 取1到2次任意字元 高.*? ===> 惰性匹配
(3)字符集: 高[用永傑帥帶了]* 匹配高後面[用永傑帥帶了]任意次 高[永傑]* 匹配不是永傑的字元任意次 [\d] 匹配任意乙個數字 [\d]+ 匹配任意個數字
(4) 在python中 *****=> \ 一般都有轉義的含義,所以一般在字串的前面加r,就能轉義成 '純的' 字串 如:r'\\n' r'\n'
在正則中的含義 *****=> '\(' 表示匹配小括號 '\-' 表示減法 [()+*?/$.] 在字元組中一些特殊的字元會現出原形
(5) .* ===> 預設是貪婪模式,會匹配盡量長的字串 高.?帥 ===>從高到帥之間的字元,惰性匹配,回溯演算法
.*? ===> 轉換為非貪婪模式,會匹配盡量短的字串 .*?x ===>取前面任意長度的字元,直到x出現,停止
(6) *? 重複任意次,但盡可能少重複
*? 重複任意次,但盡可能少重複
+? 重複1次或更多次,但盡可能少重複
?? 重複0次或1次,但盡可能少重複
重複n到m次,但盡可能少重複
重複n次以上,但盡可能少重複
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...