re模組:re模組本身只是用來操作正規表示式的,和正則本身沒關係。
正規表示式:是一種規則 匹配字串的規則。
為什麼要有正規表示式?
正則規則(元字元,量詞):
第一條規則 : 本身是哪乙個字元,就匹配字串中的哪乙個字元。
第二條規則 : 字元組[字元1字元2],乙個字元組就代表匹配乙個字元,只要這個字元出現在字元組裡,那麼就說明這個字
符能匹配上
\w 表示 大小寫字母、數字、下劃線
\s 表示空白、空格、換行符、製表符
\t 匹配製表符
\n 匹配換行符
\d \w \s
\d 表示所有的非數字
\w 表示除數字、字母、下劃線之外的所有字元
\s 表示非空白
[\d\d] [\w\w] [\s\s] 匹配所有一切字元
. 表示除了換行符之外的任意內容
\ . 在.前加乙個 轉義符。表示取消.的意義。
字元組 :只要在中括號內的所有字元都是符合規則的字元
[^ ]非字元組 :只要在中括號內的所有字元都是不符合規則的字元
^ 表示乙個字元的開始
^a
abc abc abc # 表示要匹配開始的a
$ 表示乙個字元的結束
c$
abc abc abc # 表示要匹配結束的c
^ $ 兩個同時存在時,他倆之間的正則規定長度必須和要匹配的內容長度一致。
| 表示或,注意:如果兩個規則有重疊部分,總是長的在前面,短的在後面
() 表示分組,給一部分正則規定為一組,| 這個符號的作用域就可以縮小了
表示只能出現n次
表示至少出現n次,至多出現m次
? 表示匹配0次或1次 表示可有可無 但是有只能有乙個 比如小數點
. 表示匹配1次或多次
*表示匹配0次或多次 表示可有可無 但是有可以有多個 比如小數點後n位
什麼時候會用到匹配0次?
1.匹配任意的2位整數 \d
2.匹配任意的保留兩位小數的數字 \d\.\d
3.匹配乙個整數或者小數 \d+\.\d+|\d+ \d+\.?\d* \d+(\.\d+)?
正規表示式預設貪婪匹配,總是會在符合量詞條件的範圍內盡量多匹配。
正規表示式遵循了回溯演算法,回溯演算法導致了貪婪匹配。
\dadljdkjsljdlj
<.+>
非貪婪匹配 (惰性匹配):總是匹配符合條件範圍內盡量小的字串。
元字元 量詞 ,在量詞後面加乙個?,表示去最少的匹配
元字元 量詞 ? x :表示按照元字元規則在量詞範圍內匹配,一旦遇到x就停止
.*?x 匹配任意的內容任意多次遇到x就立即停止
(\d+?x .*?x )非貪婪匹配在爬蟲中會常用
# 身份證號
# 15位 全數字 首位不為0
# 18位 前17位全數字 首位不為0 最後一位可能是x和數字
[1-9](\d(\d|x)|\d)
[1-9](\d[\dx]|\d)
[1-9]\d(\d[\dx])?
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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...