一正則表達(dá)式的語(yǔ)法
正則表達(dá)式是用來(lái)匹配或者描述字符串的工具
用處:
a.判斷輸入的字符是否是手機(jī)號(hào)/郵箱祷嘶,是否是ip地址
b.提取滿足條件的字符串
c.字符串替換
python中通過(guò)re模塊中相應(yīng)的方法來(lái)支持正則表達(dá)式的匹配、查找和替換的功能
fullmatch(正則表達(dá)式寞蚌,字符串)--->判斷正則表達(dá)式是否完全匹配
正則表達(dá)式:就是一個(gè)字符串,字符串中是正則表達(dá)式語(yǔ)法, r'正則表達(dá)式'
正則表達(dá)式中包含兩個(gè)部分涝焙,一個(gè)是正則表達(dá)式語(yǔ)法對(duì)應(yīng)的字符坠韩,二是普通字符
1. .(匹配任意字符)
一個(gè).只匹配一個(gè)任意字符
2. \w(匹配一個(gè)字符)
一個(gè)\w只匹配一個(gè)字符
3. \s(匹配任意空白字符)
空白字符:空格距潘、制表符( \t)、回車(換行(\n))只搁、等輸入空白字符
一個(gè)\s只匹配一個(gè)空白字符
4. \d(匹配數(shù)字字符)
5. \b(檢測(cè)邊界)
一個(gè)\b不會(huì)去匹配一個(gè)字符音比,而是單純的檢測(cè)\b出現(xiàn)的位置是否是單詞邊界
單詞邊界:字符串開(kāi)始和結(jié)尾、空格氢惋、換行洞翩、標(biāo)點(diǎn)符號(hào)等,可以將兩個(gè)單詞隔開(kāi)的字符都是帶刺邊界
6. ^(檢測(cè)是否是字符串開(kāi)頭)
7. $(檢測(cè)是否是字符串結(jié)尾)
8.\W(匹配非字母焰望,數(shù)字下劃線)
9. \S(匹配非空白字符)
10. \D(匹配非數(shù)字字符)
11. \B(檢測(cè)是否不是邊界)
12. [](在括號(hào)中出現(xiàn)任意一個(gè)字符)
[字符集] --->匹配一個(gè)字符骚亿,這字符是字符集的任意一個(gè)字符
[字符1-字符2]--->匹配一個(gè)字符,這個(gè)字符是Unicode編碼值在字符1到字符2中的任意一個(gè)字符熊赖,字符1的編碼值小于字符2
例如:[1-9] --->數(shù)字1-9
[a-z] ---->小寫字母
[A-Z]----->大寫字母
注意:’-‘在括號(hào)中来屠,如果放在兩個(gè)字符之間表示范圍
13. [^字符集]-->(匹配一個(gè)不在字符集中的任意一個(gè)字符)
二.正則表達(dá)式次數(shù)相關(guān)符號(hào)
1. *(匹配0次或者多次)
字符*--->字符出現(xiàn)0次或者多次
2. +(匹配一次或者多次)
3. ?(匹配0次或者一次)
4.{}(指定次數(shù))
三.分支和分組
import re
1. | (分支)
條件1 | 條件2 ---->先用條件1去匹配震鹉,如果匹配成功就成功俱笛,如果條件1失敗,用條件2去匹配
注意:如果條件1匹配不成功就不會(huì)去匹配條件2
2.()(分組)
a.組合(將括號(hào)的內(nèi)容作為一個(gè)整體操作)
b.捕獲--->使用帶括號(hào)的正則表達(dá)式匹配成功后足陨,只獲取括號(hào)中的內(nèi)容
c.重復(fù)-->再正則表達(dá)式中可以通過(guò)\數(shù)字來(lái)重復(fù)前面()中匹配到的結(jié)果嫂粟,數(shù)字代表前第幾個(gè)分組
3.轉(zhuǎn)義字符
正則表達(dá)式可以通過(guò)在特殊的符號(hào)前加\,來(lái)讓特殊的符號(hào)沒(méi)有意義
. + * $ ^ 等有特殊的功能
注意:在中括號(hào)有特殊功能的符號(hào)墨缘,只代表符號(hào)本身
\不管在哪兒都需要轉(zhuǎn)義
-在[]外面沒(méi)有特殊功能,在[]中要表示-本身零抬,就不要放在兩個(gè)字符之間
()需要轉(zhuǎn)義
四.re模塊中的函數(shù)
import re
1. compile
compile(正則表達(dá)式字符串) --> 將正則表達(dá)式字符串轉(zhuǎn)換成正則表達(dá)式對(duì)象
2.fullmatch和match
fullmatch(正則表達(dá)式字符串, 字符串)
--> 用正則表達(dá)式去完全匹配字符串(匹配整個(gè)字符串)镊讼,返回匹配對(duì)象(SRE_Match)或者None
match(正則表達(dá)式字符串, 字符串)
--> 匹配字符串開(kāi)頭,返回匹配對(duì)象或者None
2.group(group = 0) --> 獲取匹配結(jié)果
group()/group(0) --> 獲取正則表達(dá)式完全匹配的結(jié)果
group(index>0) --> 獲取正則表達(dá)式中第group個(gè)分組匹配到的結(jié)果
3.search
search(正則表達(dá)式, 字符串)
--> 查找字符串中滿足正則表達(dá)式的第一個(gè)字符串。返回值是匹配對(duì)象或者None
4.findall
findall(正則表達(dá)式, 字符串) --> 獲取字符串中滿足正則表達(dá)式的所有的子串平夜,返回一個(gè)列表
注意:如果正在表達(dá)式中有分組蝶棋,取值的時(shí)候只取分組中匹配到的結(jié)果;
如果有多個(gè)分組,會(huì)將每個(gè)分組匹配到的結(jié)果作為一個(gè)元祖的元素
5.finditer
finditer(正則表達(dá)式, 字符串)
--> 查找所有滿足正則條件的子串忽妒,返回值是迭代器玩裙,迭代器中的元素是匹配對(duì)象
6. split
split(正則表達(dá)式,字符串) --> 將字符串按照滿足正則表達(dá)式條件的子串進(jìn)行分割
7.sub
sub(正則表達(dá)式,repl,字符串) --> 將字符串中滿足正則表達(dá)式條件的子串替換成repl。返回替換后的字符串