正規表示式

2021-10-02 15:00:46 字數 2494 閱讀 1175

從乙個大檔案中找到所有符合 規則的內容 ----爬蟲

1.字元組 [字元]:

# [abc]   匹配a或者b或者c

# [0-9] 根據ascii進行範圍的比對

# [a-z] [a-z] [a-z] 但是不能寫[a-z] 範圍只能從小到大根據ascii

# [a-z] 可以匹配所有的大小寫字母 不推薦使用 因為91-97之間的內容也會包括

# 大小寫字母 - [a-za-z] 表示匹配所有的大小寫

# [0-9a-z] 匹配所有的小寫字母和數字

# [0-9a-za-z] 匹配大小寫字母和數字

元字元匹配內容

.匹配除換行符以外的任意字元

\w匹配字母或數字或下劃線

\s匹配任意的空白符

\d匹配數字

\n匹配乙個換行符

\t匹配乙個製表符

\b匹配乙個單詞的結尾

^匹配字串的開始

$匹配字串的結尾

\w匹配非字母或數字或下劃線

\d匹配非數字

\s匹配非空白符

a|b匹配字元a或字元b

()匹配括號內的表示式,也表示乙個組

[…]匹配字元組中的字元

[^…]

匹配除了字元組中字元的所有字元

量詞用法說明

*重複零次或更多次

+重複一次或更多次

?重複零次或一次

重複n次

重複n次或更多次

重複n到m次

在python中,無論是正規表示式,還是待匹配的內容,都是以字串的形式出現的,在字串中\也有特殊的含義,本身還需要轉義。所以如果匹配一次"\n",字串中要寫成』\n』,那麼正則裡就要寫成"\\n",這樣就太麻煩了。這個時候我們就用到了r』\n』這個概念,此時的正則是r』\n』就可以了。

正則待匹配字元

匹配 結果

說明\n

\nfalse

因為在正規表示式中\是有特殊意義的字元,所以要匹配\n本身,用表示式\n無法匹配

\n\n

true

轉義\之後變成\\,即可匹配

「\\n」

『\n』

true

如果在python中,字串中的'\'也需要轉義,所以每乙個字串'\'又需要轉義一次

r』\n』

r』\n』

true

在字串之前加r,讓整個字串不轉義

#	()       分組             匹配括號內的表示式,也表示乙個組    # 約束 | 描述的內容的範圍問題

# www\.(oldboy|baidu|jd|taobao)\.com

# .*x  的用法

# 表示匹配任意字元,任意多次數,遇到最後乙個x才停下來

# .*?x  的用法

# 表示匹配任意字元,任意多次數,但是一旦遇到x就停下來

. 是任意字元

* 是取 0 至 無限長度

? 是非貪婪模式。

幾個常用的非貪婪匹配pattern

*? 重複任意次,但盡可能少重複

+? 重複1次或更多次,但盡可能少重複

?? 重複0次或1次,但盡可能少重複

? 重複n到m次,但盡可能少重複

? 重複n次以上,但盡可能少重複

# 18/15位的身份證號

# 15

# 1-9 一共十五位

# [1-9]\d

# 18

# 1-9 16 0-9/x

# [1-9]\d[0-9x]

# [1-9]\d[\dx]

# [1-9]\d(\d|x)

# ^([1-9]\d[0-9x]|[1-9]\d)$

# ^[1-9](\d[\dx]|\d)$

# ^[1-9]\d(\d[\dx])?

# 手機號碼

# 1 3-9 11位

# 1[3-9]\d

# 判斷使用者輸入的內容是否合法,如果使用者輸入的對就能查到結果,如果輸入的不對就不能查到結果

# ^1[3-9]\d$

# 從乙個大檔案file中找到所以符合規則的內容,

# 1[3-9]\d

正規表示式 正規表示式 總結

非負整數 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正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...