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...