day17-課堂總結(jié)

正則基本符號(hào)

1.什么是正則表達(dá)式
正則表達(dá)式就是字符匹配的工具;是由正則符號(hào)和普通字符組成,來(lái)匹配不同規(guī)律的字符串
2.python對(duì)正則表達(dá)式的支持
python中提供了一個(gè)re模塊,用來(lái)支持正則表達(dá)式
fullmatch(正則表達(dá)式,字符串) - 用正則表達(dá)式去完全匹配字符串
如果匹配成功,返回匹配結(jié)果,失敗返回None
python中的正則表達(dá)式寫(xiě)法:將正則內(nèi)容寫(xiě)在字符串中,一般這個(gè)字符串前面會(huì)加r\R

1.普通字符

普通字符在正則表達(dá)式中,代表本身字符

2 .匹配任意字符

在正則表達(dá)式中,.出現(xiàn)的位置,可以匹配一個(gè)任意字符
注意:一個(gè).只能匹配一個(gè)字符

3. \w(匹配字符數(shù)字字母下劃線(xiàn))

在正則表達(dá)式,\w出現(xiàn)的位置,可以匹配一個(gè)任意的字符數(shù)字字母下劃線(xiàn)(其實(shí)也可以匹配Unicode編碼中除了ascii碼剩下的部分)中文也能匹配

4. \s(匹配空白字符)

空白字符包括:空格,制表符和換行符(空格,\t,\r,\n)

5. \d(匹配數(shù)字字符)

6. \b(檢查單詞邊界)

注意:檢查\b出現(xiàn)的位置是否是單詞邊界,不會(huì)對(duì)字符進(jìn)行匹配
當(dāng)正在表達(dá)式中出現(xiàn)了\b,匹配的時(shí)候去掉\b,匹配成功后在看\b出現(xiàn)的位置是否是單詞邊界
單詞邊界:字符串開(kāi)頭,字符串結(jié)尾,標(biāo)點(diǎn)符號(hào),空白符號(hào)等(只要能夠?qū)卧~區(qū)分開(kāi)的符號(hào)都是單詞邊界)

7 ^(檢測(cè)字符串開(kāi)頭)

在match和fullmatch中沒(méi)有意義,search、findall等中有意義

8 $(檢測(cè)字符串結(jié)尾)

在match和fullmatch中沒(méi)有意義
\大寫(xiě)字母對(duì)應(yīng)的功能是 \小寫(xiě)字母取反
\W - 匹配非數(shù)字字母下劃線(xiàn)
\D - 匹配非數(shù)字字符
\S - 匹配非空白字符
\B - 匹配非單詞邊界

10.[字符集]-(匹配中括號(hào)出現(xiàn)的任意一個(gè)字符)

例如:[abc] - 匹配一個(gè)字符是a或者b或者c
注意:a.一個(gè)[]只能匹配一個(gè)字符
b.正則中有特殊功能的單個(gè)符號(hào),例如:. ^ + * |等
c.匹配字符的組合字符,在中括號(hào)中保持原來(lái)的功能,例如:\w \d \s \W \S \D

[字符1-字符2] - 表示字符1到字符2(注意:要求字符1的編碼值要小于字符2的編碼值)

[a-z] - 表示匹配所有小寫(xiě)字母
[A-Z] - 表示匹配所有大寫(xiě)字母
[a-zA-Z] - 表示匹配所有的字母
[1-7] - 匹配數(shù)字字符1到7
[\u4e00-\u9fa5] - 匹配所有的中文
[字符1字符2-] - 這兒的-表示減號(hào)本身

[^字符集] - 匹配不在字符集中的任意一個(gè)字符

正則控制匹配次數(shù)

1 *(匹配0次或者多次)

a* - a出現(xiàn)0次或者多次,'' 'a' 'aa'....
\d* - 任意數(shù)字出現(xiàn)0次或者多次 '' '1' '551254'.....
[abc]* - abc中的一個(gè)出現(xiàn)0次或者多次
[A-F]* - A到F中任意字符出現(xiàn)0次或者多次

注意:在[]外面的*的前面需要一個(gè)字符或者一個(gè)匹配字符的符號(hào)

2. +(匹配1次或者多次)

a+ a至少出現(xiàn)一次
\d+ -數(shù)字至少出現(xiàn)一次

3 ?(匹配0次或者1次)

a? - a出現(xiàn)0次或者1次, '' 'a' 可以匹配

4.{}

{N} - 匹配N(xiāo)次,a{3}:匹配三個(gè)a
{M,N} - 匹配M到N次, a{3, 5},匹配三個(gè)a,或者四個(gè)a,或者五個(gè)a
{,N} - 最多匹配N(xiāo)次(0-N) a{, 3} '' 'a' 'aa' 'aaa'
{M,} - 至少匹配M次 例如:a{3,} 'aaa' 'aaaa'.....

分之、捕獲和貪婪

1.分之

條件1 | 條件2 - 匹配條件1或者條件2
\d{2}|[a-z]匹配兩個(gè)數(shù)字字符或者一個(gè)小寫(xiě)字母
a\d{2}|\w{2} - 匹配一個(gè)a后面兩個(gè)數(shù)字,或者就是兩個(gè)數(shù)字字母下劃線(xiàn)
注意:正則中的分之也會(huì)出現(xiàn)短路,當(dāng)條件1可以匹配,就不會(huì)在使用條件2進(jìn)行匹配

2.() - 捕獲和分組

a.分組 - 將括號(hào)中的內(nèi)容作為一個(gè)整體
'abc123'
'abcHJS'
re_str1 = r'abc\d{3}|abc[A-Z]{3}'
re_str2 = r'abc(\d{3}|[A-Z]{3})'

b.捕獲

通過(guò)正則獲取符合條件的子串的時(shí)候,可以在正則表達(dá)式中加括號(hào),匹配后只
獲取括號(hào)里面匹配到的內(nèi)容

re.findall(正則表達(dá)式,字符串) - 在字符串中獲取符合正則表達(dá)式條件的所有子串,返回一個(gè)列表
c.重復(fù)匹配
帶多個(gè)分組的正則表達(dá)式中,可以在分組的后面通過(guò)添加'\數(shù)字'來(lái)重復(fù)前面第幾個(gè)分組中匹配到的內(nèi)容
說(shuō)明:\數(shù)字 - 這兒的數(shù)字代表前面第幾個(gè)分組;\1代表第一個(gè)分組 \2代表第二個(gè)分組

3.貪婪

匹配次數(shù)后加?就是貪婪匹配:*?, +?, ??, {M,N}?, {M,}?表示盡可能少的重復(fù)

4.轉(zhuǎn)義符號(hào)

在正則表達(dá)式中可以在有特殊意義或者特殊功能的符號(hào)前加\來(lái)取消其特殊功能
\w - 代表兩個(gè)字符分別是''和w
+ 代表+字符
*
?
[],(),{} 表示字符的時(shí)候,前面也要加
注意:在中括號(hào)中,\必須加\表示\本身,在最前面加\表示本身,-在兩個(gè)字符之間加\表示-本身

re模塊

1.compile

compile(正則表達(dá)式) - 將正則表達(dá)式轉(zhuǎn)換成正則表達(dá)式對(duì)象
轉(zhuǎn)換成對(duì)象后,可以通過(guò)對(duì)象調(diào)用對(duì)象方法

2.match 和fullmatch

a.fullmatch(正則表達(dá)式,字符串) - 完全匹配,從字符串開(kāi)頭匹配到字符串結(jié)束
b.match(正則表達(dá)式,字符串) - 不完全匹配,只匹配字符串開(kāi)頭
匹配成功返回匹配對(duì)象,匹配失敗返回None

1.span - 匹配到的內(nèi)容的范圍,(開(kāi)始下標(biāo),結(jié)束下標(biāo)),結(jié)束下標(biāo)取不到
匹配對(duì)象.span() - 獲取整個(gè)正則表達(dá)式匹配到的范圍
匹配對(duì)象.span(n) - 獲取正則表達(dá)式中第n個(gè)分組匹配到的范圍(前提是有分組)
start和end - 獲取匹配結(jié)果的開(kāi)始下標(biāo)和結(jié)束下標(biāo)
匹配對(duì)象.start()/匹配對(duì)象.end() - 獲取整個(gè)正則表達(dá)式匹配到的開(kāi)始下標(biāo)/結(jié)束下標(biāo)
匹配對(duì)象.start(n)/匹配對(duì)象.end(n) - 獲取正則表達(dá)式中第n個(gè)分組匹配到的開(kāi)始/結(jié)束下標(biāo)
3.group - 獲取匹配到的內(nèi)容
匹配對(duì)象.group() - 獲取整個(gè)正則表達(dá)式匹配到的內(nèi)容
匹配對(duì)象.group(n) - 獲取正則表達(dá)式中第n個(gè)分組匹配到的內(nèi)容
4.string - 獲取用來(lái)匹配的原字符串
匹配對(duì)象.string

3.search

search(正則表達(dá)式,字符串) - 匹配字符串中,第一個(gè)滿(mǎn)足正則表達(dá)式的子串,如果
匹配成功返回匹配對(duì)象,或者返回None

4.split

split(正則表達(dá)式,字符串) - 在字符串中按照滿(mǎn)足正則表達(dá)式條件的子串對(duì)字符串進(jìn)行切割

5.sub

sub(正則表達(dá)式,新字符串,字符串) - 用新的字符串替換滿(mǎn)足正則表達(dá)式的子串,返回
一個(gè)替換后的字符串

6.findall

findall(正則表達(dá)式,字符串) - 在字符串中獲取滿(mǎn)足正則表達(dá)式的所有的字符串,返回
一個(gè)列表,列表元素是字符串
注意:如果這個(gè)正則表達(dá)式中有一個(gè)分組,結(jié)果是列表中那個(gè)分組匹配到的結(jié)果
如果這個(gè)正則表達(dá)式中分組的個(gè)數(shù)大于1,結(jié)果是一個(gè)列表,列表中的元素
是元組,元組中是每個(gè)分組匹配到的內(nèi)容

7.finditer

finditer(正則表達(dá)式,字符串) - 獲取字符串中滿(mǎn)足正則表達(dá)式的內(nèi)容,返回的是一個(gè)
迭代器,迭代器中的元素是匹配對(duì)象

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容