python 正規表示式整理

2022-08-19 07:03:09 字數 1874 閱讀 8623

最近有個任務去匹配網頁**中的url,雖然可以用beautifulsoup()來過濾,但是也可以用正則來處理。

對於正則,能夠根據查詢的資料寫出來,不熟練不說,對re模組的函式沒有弄清楚,在這裡進行統一的整理。

1.re.match(pattern, string, flags=0) 是從起始位置進行匹配,如果匹配不到就返回none   一般來說是和group()結合使用

import

reprint(re.match('

www', '

www.runoob.www

').group()) #

在起始位置匹配

print(re.match('

com', '

www.runoob.com

')) #

在起始位置匹配,沒有匹配到

返回結果

www

none

第2個返回none時,如果後面是.group()是會報錯的

同理:re.search(pattern, string, flags=0)也是這麼用的

import re

print(re.search('run', 'www.runoob.www').group()) # 不限定位置

print(re.findall('w', 'www.runoob.com')) # 不在起始位置匹配

結果:

run

['w', 'w', 'w']

2.re.compile(pattern, flags=0) 編譯

一般寫完正則後都會編譯一下,這是為了不重複編譯,讓檢索符合格式的字串的速度更快,這裡跟findall 結合舉例:

import re

text = "jsjsdjj123kdfksdfjsk123aa**sdjfks"

p = r"[a-za-z]"

pattern = re.compile(p)

# last_str = pattern.findall(text) 返回的結果和下方返回的結果是一樣的 返回乙個list

last_str = re.findall(pattern, text)

print(last_str)

返回結果:

['j', 's', 'j', 's', 'd', 'j', 'j', 'k', 'd', 'f', 'k', 's', 'd', 'f', 'j', 's', 'k', 'a', 'a', 's', 'd', 'j', 'f', 'k', 's']

3. re.sub(pattern, repl, string, count=0, flags=0) 可以替換(過濾)字串中的符合pattern的字元

import re

print(re.sub('[a-za-z]','','ss223sss224eeerw'))

結果:223224

4.字符集 字符集可以匹配它所包含的任意字元,所以[pj]yton可以匹配python jython  python。你可以使用範圍,比如[a-z]能夠匹配任意字母

為了反轉字符集,可以在開頭使用^字元,比如'[^abc]'可以匹配除了a、b、c之外的字元。

5.  re.escape(string)超實用,它可以對字串中所有可能被解釋為正則運算子的字元進行轉義('\')。如果字串很長且包含很多特殊字元,而你又不想輸入一大堆反斜線,或者

字串來自於使用者,且要作為正規表示式的一部分的時候,可以使用這個函式。

Python正規表示式整理

目錄 python正規表示式整理 一 正規表示式介紹 二 正規表示式re模組 1 匯入re模組 2 正規表示式過程 三 正規表示式語法 一 匹配單個字元 二 匹配多個字元 三 字串的邊界匹配 四 分組匹配 在不使用正規表示式的情況下,我們想要實現字串的匹配就必須要單獨的建立乙個函式,通過呼叫函式來實...

正規表示式整理

常見正規表示式驗證 d 整數 d 正整數 d 負整數 a za z0 9 數字和字元 不包含標點 u4e00 u9fa5 中文 0 9 0 9 浮點數 a za z0 9 a za z0 9 a za z0 9 郵箱位址 1 9 0 9 0 9 0 9xx 簡單判斷15位或18位身份證 1 9 0 ...

整理正規表示式

控制開頭 控制結尾 轉義序列 n新行 r回車 t製表符 a z 匹配所有的小寫字母 a z 匹配所有的大寫字母 a za z 匹配所有的字母 0 9 匹配所有的數字 0 9 匹配所有的數字,句號和減號 f r t n 匹配所有的白字元 前面曾經提到 表示字串的開頭,但它還有另外乙個含義。當在一組方括...