python正規表示式

2021-10-02 10:18:55 字數 2058 閱讀 3822

import re

#re.match(正規表示式,需要處理的字串)

re.match(r'hello'

,'hello world'

)

如果有返回值那麼就說明滿足使用者的需求規範,如果沒有返回值,那就沒有使用者需要的需求規範

re.match(r'[hh]ello'

,'hello world'

)

說明:加上中括號,可以擴大需求規範,這樣在使用者輸入大寫或小寫都可以獲得乙個返回值

正規表示式中符號意義:

. 匹配任意乙個字元(除了\n)

匹配中例舉的字元

\d 匹配數字,即0-9

\d 匹配非數字,即不是數字

\s 匹配空白,即空格,tab鍵

\s 匹配非空白

\w 匹配單詞字元,即a-z,a-z,0-9

\w 匹配非單詞字元

「 * 」 匹配前乙個字元出現0次或者無限次,即可有可無

「 + 」 匹配前乙個字元出現1次或者無限次,即至少有1次

? 匹配前乙個字元出現1次或者0次,即要麼有1次,要麼沒有

匹配前乙個字元出現m次

匹配前乙個字元出現從m到n次

^ 匹配字串開頭

$ 匹配字串結尾

| 匹配左右任意乙個表示式

(ab) 將括號中字元作為乙個分組

\num 引用分組num匹配到的字串

(?p) 分組起別名

(?p=name) 引用別名為name分組匹配到的字串

做判斷要以^開頭,以$結尾

如果遇到郵箱一類的需要輸入特殊符號的,可在特殊符號之前加上\進行轉義

ret = re.match(r'hello\d'

,'hello1111111'

)#結果:hello1

#找乙個變數將使用者輸入存起來

#乙個\d就只能取乙個關鍵字,後邊就不會在取

ret.group(

)#使用group調出使用者所輸入的資料

資料細化:

ret = re.match(r'hello[1-8]'

,'hello2'

)#說明:在取hello時,最多只能取1-8超出會返回none

#指針對連續

ret = re.match(r'hello[1-36-8]'

,'hello1'

)#表示1-3,6-8

#需要什麼條件就在中括號中直接加條件即可

#但是後邊必須滿足前邊的規範

多個字元匹配:

re.match(r'hello\d'

,'hello12'

)#說明:乙個\d只能占有乙個字元,如果使用者輸入超過規定,那麼就會報錯,後面的大括號就代表使用者最多可以輸入幾位

關於「?」

re.match(r'021-?\d'

,'021-12345678'

)#說明:關於?,意思為問號前邊可以有乙個,也可以沒有

郵箱判斷:

re.match(r'^[a-za-z0-9]@(163|qq|icloud)\.com$'

,'[email protected]'

)# 如果出現多個郵箱區別,用|來隔開,代表「或」,但注意隔離區間使用()括起來

分組:

re.match(r'([a-z])@(163)\.com'

,'[email protected]'

)group(1)

#當我們在group的括號中新增數字,則表示要取出的內容,取出內容的範圍就是表示式小括號的內容

re.match(r'<(\w*)>.*',''

)#說明:\1代表取第乙個分組中的要求

re.match(r'<(?p\w*)><(?p\w*)>.*',''

)group(

)#說明:使用(?p)命名規則,將分組命名為p1分組和p2分組,然後使用(?p=name)調取

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