python 正規表示式

2022-08-28 02:00:11 字數 1656 閱讀 1270

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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...