python自1.5以後增加了re的模組,提供了正規表示式模式,re模組使python語言擁有了全部的正規表示式功能
原型:match(pattern, string, flags=0)patter: 匹配的正規表示式
string: 要匹配的字串
flags:標誌位,用於控制正規表示式的匹配方式,值如下
re.i 忽略大小寫
re.l 做本地戶識別
re.m 多行匹配,影響^和$
re.s 是.匹配包括換行符在內的所有字元
re.u 根據unicode字符集解析字元,影響\w \w \b \b
re.x 使我們以更靈活的格式理解正規表示式
引數:功能:嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,返回none
原型:search(pattern, string, flags=0)引數:patter: 匹配的正規表示式
string: 要匹配的字串
flags:標誌位,用於控制正規表示式的匹配方式
功能:掃瞄整個字串,並返回第乙個成功的匹配
原型:findall(pattern, string, flags=0)引數:patter: 匹配的正規表示式
string: 要匹配的字串
flags:標誌位,用於控制正規表示式的匹配方式
功能:掃瞄整個字串,並返回匹配結果的元組
. 匹配除換行符('\n')以外的任意字元[0123456789] 是字元集合,表示匹配方括號中所包含的任意乙個字元
[abcde] 匹配'a','b','c','d','e'中任意乙個字元
[a-z] 匹配任意小寫字母
[a-z] 匹配任意大寫字母
[0-9] 匹配任意數字,類似[0123456789]
[0-9a-za-z] 匹配任意的數字和字母
[0-9a-za-z_] 匹配任意的數字、字母和下劃線
[^abcde] 匹配除了sunck這幾個字母以外的所有字元,中括號裡的^稱為脫字元,表示不匹配集合中的字元
[^0-9] 匹配所有的非數字字元
\d 匹配數字,效果同[0-9]
\d 匹配非數字字元,效果同[^0-9]
\w 匹配數字,字母和下劃線,效果同[0-9a-za-z_]
\w 匹配非數字,字母和下劃線,效果同[^0-9a-za-z_]
\s 匹配任意的空白符(空格,換行,回車,換頁,製表),效果同[ \f\n\r\t]
\s 匹配任意的非空白符,效果同[^ \f\n\r\t]
^ 行首匹配,和在裡的^不是乙個意思$ 行尾匹配
\a 匹配字串開始,它和^的區別是,\a只匹配整個字串的開頭,即使在re.m模式下也不會匹配它行的行首
\z 匹配字串結束,它和$的區別是,\z只匹配整個字串的結束,即使在re.m模式下也不會匹配它行的行尾
\b 匹配乙個單詞的邊界,也就是值單詞和空格間的位置
'er\b'可以匹配never,不能匹配nerve。由於\b為backspace的轉義字元,因此使用時要把'\'進行轉義,避免系統當成backspace
\b 匹配非單詞邊界
說明:下方的x、y、z均為假設的普通字元,n、m(非負整數),不是正規表示式的元字元在 「*」 「+」 「」的後面加上「?」可以變成非貪婪匹配(xyz) 匹配小括號內的xyz(作為乙個整體去匹配)
x? 匹配0個或者1個x
x* 匹配0個或者任意多個x(.* 表示匹配0個或者任意多個字元(換行符除外))
x+ 匹配至少乙個x
x 匹配確定的n個x(n是乙個非負整數)
x 匹配至少n個x
x 匹配至少n個最多m個x。注意:n <= m
x|y |表示或,匹配的是x或y
*? +? ? 最小匹配,通常都是盡可能多的匹配,可以使用這種解決貪婪匹配
原型:finditer(pattern, string, flags=0)引數:patter: 匹配的正規表示式
string: 要匹配的字串
flags:標誌位,用於控制正規表示式的匹配方式
功能:與findall類似,掃瞄整個字串,返回的是乙個迭代器
字串的替換和修改sub(pattern, repl, string, count=0)
subn(pattern, repl, string, count=0)
pattern: 正規表示式(規則)
repl: 指定的用來替換的字串
string: 目標字串
count: 最多替換次數
功能:在目標字串中以正規表示式的規則匹配字串,再把他們替換成指定的字串。可以指定替換的次數,如果不指定,替換所有的匹配字串
區別:前者返回乙個被替換的字串,後者返回乙個元組,第乙個元素被替換的字串,第二個元素表示被替換的次數
概念:除了簡單的判斷是否匹配之外,正規表示式還有提取子串的功能。用()表示的就是提取分組
str6 = "010-53247654"
m = re.match(r"(?p\d)-(?p\d)", str6)#first和last分別為組名
#使用序號獲取對應組的資訊,group(0)代表匹配到的結果
print(m.group(0))
print(m.group(1))
print(m.group("first"))
print(m.group(2))
#檢視匹配的各組的情況
print(m.groups())
當我們使用正規表示式時,re模組會幹兩件事1、編譯正規表示式,如果正規表示式本身不合法,會報錯
2、用編譯後的正規表示式去匹配物件
compile(pattern, flags=0)
pattern:要編譯的正規表示式
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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...