python 正規表示式

2022-09-11 21:48:35 字數 2989 閱讀 6863

"""

tool.chinaz.com

"""# 什麼是正規表示式

# 一套規則 - 匹配字串的

# 能做什麼

# 1.檢測乙個輸入的字串是否合法 -- web開發專案 表單驗證

# 使用者輸入乙個內容的時候,我們要提前做檢測

# 能夠提高程式的效率並且減輕伺服器的壓力

# 2.從乙個大檔案中找到所有符合規則的內容 -- 日誌分析\爬蟲

# 能夠高效的從一大段文字中快速找到符合規則的內容

# 正則規則

# 所有的規則中的字元就可以剛好匹配到字串中的內容

# 字元組 描述的是乙個位置上能出現的所有可能性

# 接受範圍,可以描述多個範圍,連著寫就可以了

# [abc] 乙個中括號只表示乙個字元位置

# 匹配a或者b或者c

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

# [a-z]

# [a-z]

# [a-za-z] 大小寫

# [0-9a-z]

# [0-9a-za-z_]

# 在正規表示式中能夠幫助我們表示匹配的內容的符號都是正則中的 元字元

# [0-9] --> \d 表示匹配一位任意數字 digit

# [0-9a-za-z_] --> \w 表示匹配數字字母下劃線 word

# 空格 -->

# tab --> \t

# enter回車 --> \n

# 空格,tab和回車 --> \s 表示所有空白 包括空格 tab和回車

# 元字元 -- 匹配內容的規則

# [^]

# \d

# \w

# \s

# \t

# \n

# \w 非數字字母下劃線

# \d 非數字

# \s 非空白

# [\d] \d

# [\d\d] [\w\w] [\s\s] 表示匹配所有

# . 匹配除了換行符之外的所有

# [^\d] 匹配所有的非數字

# [^1] 匹配所有的非數字

# ^ 匹配乙個字串的開始

# $ 匹配乙個字串的結尾

# a表示式|b表示式 匹配a或者b表示式中的內容,如果匹配a成功了,不會繼續和b匹配

# 所以,如果兩個規則有重疊部分,總是把長的放在前面

# () # 約束 | 描述的內容的範圍問題

# 記憶元字元 : 都是表示能匹配哪些內容,乙個元字元總是表示乙個字元位置上的內容

# \d \w \s \t \n \d \w \s

# [^] .

# ^ $

# | ()

# 量詞

# 表示匹配n次

# 表示匹配至少n次

# 表示至少匹配n次,至多m次

# ? 表示匹配0次或1次

# + 表示1次或多次

# * 表示0次或多次

# 匹配0次

# 整數 \d+

# 小數 \d+\.\d+

# 整數或小數 : \d+\.?\d*

# 分組的作用 : \d+(\.\d+)?

# 手機號碼

# 1 3-9 11位

# 1[3-9]\d

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

# ^1[3-9]\d$

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

# 1[3-9]\d

# 貪婪匹配

# 在量詞範圍允許的情況下,盡量多的匹配內容

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

# 非貪婪(惰性)匹配

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

# 轉義符

# 原本有特殊意義的字元,到了表達它本身的意義的時候,需要轉義

# 有一些有特殊意義的內容,放在字元組中,會取消它的特殊意義

# [().*+?] 所有的內容在字元組中會取消它的特殊意義

# [a\-c] -在字元組中表示範圍,如果不希望它表示範圍,需要轉義,或者放在字元組的最前面\最後面;

# 元字元

# \d \s \w \t \n \d \s \w

# [^] .

# ^ $

# () |

# 量詞

# {} 表示任意的次數,任意的次數範圍,至少多少次

# ? + *

# 貪婪和非貪婪匹配

# 總是在量詞範圍內盡量多匹配 - 貪婪

# 總是在量詞範圍內盡量少匹配 - 惰性

# .*?x 匹配任意內容任意次數 遇到x就停止

# .+?x 匹配任意內容至少1次 遇到x就停止

# 轉義符問題

# . 有特殊的意義,取消特殊的意義\.

# 取消乙個元字元的特殊意義有兩種方法

# 在這個元字元前面加\

# 對一部分字元生效,把這個元字元放在字元組裡

# [.()+?*]

# 18/15位的身份證號

# 15

# 1-9 15

# [1-9]\d

# 18

# 1-9 16 0-9/x

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

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

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

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

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

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