python正規表示式二

2021-09-29 02:23:00 字數 3146 閱讀 8086

import re

print

("匹配單個字元與數字"

)r'''

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

[0123456789] 是字元集合,匹配方括號中所包含的任意乙個字元

[a-z] 匹配任意乙個小寫字母

[a-z] 匹配任意乙個大寫字母

[0-9a-za-z] 匹配任意乙個數字字母

[0-9a-za-z_] 匹配任意乙個數字字母和下劃線

[^0-9] 匹配除了數字以外的所有字元

[0-9] 匹配任意乙個數字

[\d] 匹配數字同上

[\d] 匹配非數字字元,同[^0-9]

[\w] 匹配數字,字母和下劃線效果同[0-9a-za-z_]

[\w] 效果同[^0-9a-za-z_]

[\s] 匹配任意的空白字元(空格,換行,回車,換頁,製表),效果同[ \f\n\r\t]

[\s] 效果同[^ \f\n\r\t]

flage:標誌位,用於控制正規表示式的匹配方式,值如下

re.i 忽略大小寫

re.l 做本地識別

re.m 多行匹配,影響^和$

re.s 是.匹配包括換行符在內的所有字元

re.u 根據unicose字符集解析字元,影響\w \w \b \b

re.x 使我們以更靈活的格式理解正規表示式

'''print

(re.search(

"[0-9]"

,"sunk is a good man 7"))

print

(re.search(

"[\d]"

,"sunk is a good man 5"))

print

("錨字元"

)'''

^ 行首匹配,和[^]不一樣

$ 行尾匹配

\a 匹配字串開始,和^的區別是,\a只匹配整個字串的開頭,即使在re.m

模式下也不會匹配他行的行首

\z 匹配字串結束,和$的區別是,\z只匹配整個字串的結束,即使在re.m

模式下也不會匹配他行的行尾

\b 匹配乙個單詞的邊界,也就是指單詞和空格的位置

\b 匹配非單詞邊界

'''print

(re.search(

"^sunk"

,"sunck is a good man sunk"))

print

(re.search(

"sunk$"

,"sunck is a good man sunk"))

print

(re.findall(

"^sunck"

,"sunck is a good man\nsunck is a nice man"

, re.m)

)print

(re.findall(

"\asunck"

,"sunck is a good man\nsunck is a nice man"

, re.m)

)print

("________"

)print

(re.search(r"er\b"

,"never"))

print

(re.search(r"er\b"

,"nerve"))

print

(re.search(r"er\b"

,"never"))

print

(re.search(r"er\b"

,"nerve"))

print

("匹配多個字元"

)'''

x、y、z均為普通字元

(xyz) 匹配小括號內的xyz(作為乙個整體去匹配)

x? 匹配0個或1個x

x* 匹配0個或任意多個x(貪婪匹配)

x+ 匹配至少乙個x

x 匹配確定的n個x(n為非負整數)

x 匹配至少n個x

x 匹配至少n個,至多m個x

x|y |表示或,陪陪是x或y

'''print

(re.findall(r"(sunck)"

,"sunck is a good man sunck is a nice man"))

print

(re.findall(r"[\d]+@[\w]+.[a-za-z]"

,"[email protected], [email protected]"))

#需求提取「sunck is a …… man」

print

(re.findall(r"^sunck.*man$"

,"sunck is a good man sunck is a nice man"))

print

("特殊"

)'''

*?+?

x?最小匹配 通常都是盡可能多的匹配,可以使用這種方式解決貪婪匹配

(?:x) 類似(xyz)但不表示乙個組

'''print

(re.findall(r"^sunck.*?man$"

,"sunck is a good man sunck is a nice man"))

print

(re.findall(r"sunck.*?man"

,"sunck is a good man sunck is a nice man"))

defcheckphone

(str):

pat = r"^1(([3578]\d)|(47))\d$"

res = re.match(pat,

str)

return res

print

(checkphone(

"18338737355"

))

python正規表示式(二)

re模組的用法 1 re.s可以匹配轉義符 re.findall k.n darken dark nn 只輸出第乙個darken中的ken re.findall k.n darken dark nn re.s 不僅輸出darken中的ken,還輸出了dak nn中的k nn 2 re.m匹配多行 r...

Python 正規表示式(二)

這次的正規表示式學習談一談選擇符和子模式 可選項和重複子模式 在字串的各個字元都不相同的請胯下,字符集是比較好用的,但是如果只想匹配特定的字串,那麼字符集就不合適了,這裡就可以使用管道符號 比如我們只想匹配字串 python 和 perl 我們可以使用正則 python perl 但是有時候我們不需...

python正規表示式(二)

python的正規表示式支援大量的擴充套件符號 通過使用 ilmsux 系列,使用者可以在正規表示式裡面指定乙個或者多個標記,而不是通過compile 或者其他re模組函式。下面使用re.i ignorecase的示例,最後乙個示例在re.m multiline實現多行混合。import re re...