正規表示式本身也和python沒有什麼關係,就是匹配字串內容的一種規則。
官方定義:正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。正規表示式 字串的規則
來幫助我們1.檢測某一段字串是否符合規則
2.從一大段文字中將符合規則的匹配出來 ( 爬蟲)
只和字串相關
字元組 : [字元組]
在同乙個位置可能出現的各種字元組成了乙個字元組,在正規表示式中用表示
字元:[012345]
[0-5]
[0-9]
[9-0] 不能從大到小來規定範圍
字元組內所有的範圍都是根據ascii碼來的
數字
[0-9]
字母
小寫 [a-z]
大寫 [a-z]
大小寫 [a-za-z]
數字和大小寫字母 [a-z0-9a-z]
數字+大小寫字母+下劃線
[a-z0-9a-z_]
在字元組當中 -是有特殊意義的,如果我們想取消這個橫槓的特殊意義
需要使用\作為轉義符
字元組之外的其他帶有特殊規則的元字元:
[0-9] \d 匹配任意乙個數字 digit
[a-z0-9a-z_] \w 識別符號
\n 匹配回車換行
\t 匹配製表符 table
空格 本身匹配 空格
\s 匹配所有的空白
\b 匹配乙個單詞的邊界
反義詞\w 除了數字字母下劃線之外的所有
\d 除了數字之外的所有
\s 除了空白之外的所有
. 匹配換行符之外的所有字元
\d \w \s(\n \t)
\d \w \s
.匹配所有 :[\d\d] [\w\w] [\s\s]
非字元組 :[^123]除了123之外的都匹配
開始符和結束符
^ 永遠在乙個規則的最開始
$ 永遠在乙個規則的最末尾
^和$ 規定了這個字串的長度,並且在這個長度內的內容
| 或的概念
分組的概念
總結\d \w \s \n \t \d \w \s \b
,[^]
^ $| 或 永遠把相對長的規則放在左側().
元字元
匹配內容
. 匹配除換行符以外的任意字元
\w匹配字母或數字或下劃線
\s匹配任意的空白符
\d匹配數字
\n匹配乙個換行符
\t匹配乙個製表符
\b匹配乙個單詞的結尾
^匹配字串的開始
$匹配字串的結尾
\w
匹配非字母或數字或下劃線
\d
匹配非數字
\s
匹配非空白符
a|b
匹配字元a或字元b
()
匹配括號內的表示式,也表示乙個組
[...]
匹配字元組中的字元
[^...]
匹配除了字元組中字元的所有字元
量詞:量詞 在量詞的範圍內盡可能多的匹配
表示出現n次
表示至少出現n次
表示出現n-m次
? 表示匹配0次或1次
+ 表示匹配1次或多次
* 表示匹配0次或多次
元字元 量詞
匹配的是乙個字元的內容
量詞 表示的是匹配的次數
匹配整數
[1-9]\d*|0
匹配小數
\d+\.\d+
匹配乙個整數或者小數
\d+\.\d+|([1-9]\d*|0)
\d+\.?\d*
\d+(\.\d+)?
在量詞範圍內盡可能多的匹配 - 貪婪匹配
正規表示式 匹配身份證號碼
15位
首位不能為0
^[1-9]\d$
18位
首位不能為0,末尾可能是x和數字
^[1-9]\d[\dx]$
合起來
^([1-9]\d[\dx]|[1-9]\d)$
[1-9]\d(\d[\dx])?
量詞
用法說明
*重複零次或更多次
+重複一次或更多次
?重複零次或一次
重複n次
重複n次或更多次
重複n到m次
轉義在測試的網頁上寫的是什麼
就直接複製過來
然後在字串外面加上乙個r
r'\\n' --> r'\n'
t 't'
\t \本身具有轉義作用,相當於改變了t本來的面目
\\ \本身具有轉義作用,\\相當於轉義了\的特殊作用,相當於普通的乙個'\'
貪婪匹配 :預設的 盡可能多匹配
惰性匹配 :需要我們手動設定的 盡可能少匹配
a.* 以a開頭的任意乙個字串都可以被匹配出來
a.*? 非貪婪
a.*?x 從a開始匹配,匹配任意長度的字元,遇到乙個x就立即停止
正規表示式 正規表示式 總結
非負整數 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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...