Python學習總結(九)正規表示式

2021-09-11 09:43:52 字數 2447 閱讀 5431

我的理解:正規表示式(regular expression)是用來做字串匹配的一種精簡表達方法。

一般形式:result = re.match(正規表示式, 匹配字串)

python中的正規表示式匹配規則:

從左到右匹配,一旦匹配成功立刻返回class型別(不再匹配後續字元),否則返回nonetype

表示字元

宣告:e.g. 『\d』 表示為數字,則相應大寫 『\d』 表示取反,即非數字。這裡不對其大寫做說明。符號

作用等價於

.

佔乙個字元的位置,可匹配除\n的任何字元/

[ 規則 ]匹配乙個滿足括號內規則的字元

/\d匹配乙個數字[1-9],[^\d]

\s匹配空格,如 \t, \n及空格等

[^\s]

\w匹配數字、字母、下劃線[1-9a-za-z_],[^\w]

注:[ ]間的規則與規則之間無需用空格隔開,如上面的\w的另一種表示。

[ ]內的^表示非 的意思,[^123]等價於[^1^2^3]

[1-9]:此字元為1到9間的數字

表示數量

符號作用

等價於*

符號前的字元可有可無

+符號前字元至少出現一次

?符號前字元只能出現0次或1次

指定符號前字元出現數量為m次/

指定符號前字元至少出現m次/

指定…區間為m次到n次/

注:1.解決re與python中轉義字元的衝突問題,e.g.

有字串為 string = 「\\nstring」(表轉義),如果做正規表示式匹配這個字串,需要這樣寫"\\\\nstring",為什麼是四個反斜槓呢?因為對比匹配字串來說,re的第乙個反斜槓用來作為\ 的匹配,第三個反斜槓則用來作為\n的匹配。

python中的原始(raw)字串很好的解決了這個問題,在re字串前加r例如string = r"\nstring"就直接表示了原始的字串(也就是雙引號內什麼樣,字串就是什麼樣)。

因此,在一般的re前最好加上r。

2.幾個幫助理解上述符號的例子:

result = re.match("\d+", 「abc」) ,result型別為none,因為在abc中數字一次都沒出現

result = re.match("\d?[a-z]", 「1234abc」),result型別為none,問號釋義為出現0次或1次,字串向右匹配,匹配到2前已經出現過一次數字,因此re會對 2 做[a-z]的匹配,而2型別不為字母,故為none。

result = re.match("\d?", 「1234abc」),result型別為class,當匹配到字元1為數字後,證明數字出現了一次,那麼直接返回class

表示邊界

符號作用

^匹配字串開頭

$匹配字串結尾

\b匹配單詞邊界

\b匹配單詞邊界

乙個例子,匹配手機號碼格式是否正確:

result = re.match(r"^1[35678]\d$", phone_number)

未完待續

Python學習 (九 正規表示式)

re模組使 python 語言擁有全部的正規表示式功能。re.match嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,就返回none,也含著true和false的判斷。re.match pattern,string,flags 0 有以下使用方式 test 使用者輸入的字串 if ...

python正則表達學習

python替換 主要是利用 python 的正則表達,python的正則表達功能比較強大。我就介紹下我經常用的幾個方法。可能說的詳細,如果要深入研究的話。還是 要去看下python的文件了.廢話不多說。馬上開始介紹 一般我會用re.compile來建立乙個正則物件。python 文件上介紹好象這個...

python學習 正規表示式總結

正規表示式是對 字串 操作的一種 邏輯公式 就是用事先定義好的一些特定字元 及這些特定字元的組合,組成乙個 規則字串 這個 規則字串 用來表達對字串的一種邏輯過濾 模糊匹配 import re 正規表示式模組 string jy2018 4 30jy re srt re.match jy strin...