Python正則表達(dá)式的使用技巧,都在這里了

導(dǎo)讀:今天就來(lái)跟大家一起介紹下正則表達(dá)式的使用技巧。

01 小括號(hào),大作用
一般用于獲取 () 中的正則內(nèi)容進(jìn)行下一步操作使用,如果想要關(guān)閉這種獲取能力,可以在左括號(hào) ( 后面加上 ?: 就可以了。 另一個(gè)作用就是讓括號(hào)內(nèi)正則表達(dá)式進(jìn)行組合,方便使用之前介紹的 ?* + 等,還有或操作符 |。
02 斷言
\b:匹配單詞的邊界 \B:匹配非單詞邊界,會(huì)受到ASCII標(biāo)記影響 \A/^:從開始位置匹配, 如有MULTILINE標(biāo)志,則^會(huì)在每個(gè)換行符后匹配 \Z/$:在結(jié)束位置匹配,如有MULTILINE標(biāo)志,則$在每個(gè)換行符前匹配
正前瞻(?=e):如 表達(dá)式1(?=表達(dá)式2) 表達(dá)式3 ,則表式后面的內(nèi)容需要匹配表達(dá)式2; 負(fù)前瞻(?!e):如 表達(dá)式1(?!表達(dá)式2) 表達(dá)式3 ,則表式后面的內(nèi)容不能匹配表達(dá)式2; 正回顧(?<=e):如 (?<=表達(dá)式2)表達(dá)式1 表達(dá)式3 ,則表式前面的內(nèi)容需要匹配表達(dá)式2; 負(fù)回顧(?<!e):如 (?<!表達(dá)式2)表達(dá)式1 表達(dá)式3 ,則表式前面的內(nèi)容不能匹配表達(dá)式2。
03 條件表達(dá)
04 正則的四大功能
匹配:這個(gè)之前已經(jīng)詳細(xì)講過(guò)了,就是看這個(gè)字符串是否符合正則表達(dá)式的語(yǔ)法。 提?。哼@個(gè)功能就是用來(lái)通過(guò)正則表達(dá)式提取指定字符串中符合要求的文本,如果有符合表達(dá)式的內(nèi)容會(huì)返回一個(gè)或多個(gè)。 替換:這個(gè)功能可能用的會(huì)少一些,主要是用來(lái)將查找到的符合要求的文本,替換成我們指定的字符串。 拆分:這個(gè)功能用的更少了,其實(shí)就是用正則表達(dá)式對(duì)符合要求的文本字串進(jìn)行分割。

05 正則的其他方法
sub(str, t, n):這個(gè)方法用來(lái)替換操作。即將每個(gè)匹配到的文本用 str 進(jìn)行替換,并返回替換后的字符串。當(dāng)指定了 n 時(shí),則最多替換 n 次。對(duì)于 str 可以是組名或者編號(hào)來(lái)引用捕獲到的內(nèi)容。 subn(str, t, n):這個(gè)方法和 sub() 方法基本相同,只是這個(gè)會(huì)返回一個(gè)二元組,其中除了包括結(jié)果字串,還有替換的數(shù)量。 split(str, n):這個(gè)方法是用來(lái)拆分字串操作。即將匹配到的文本對(duì)字符串進(jìn)行分割,并返回一個(gè)結(jié)果列表。如果正則存在分組,則把分組匹配文本放列表中,并且每?jī)蓚€(gè)分割的中間作為列表的一部分。
06 正則匹配對(duì)象
group():返回編號(hào)或組名匹配到的內(nèi)容。默認(rèn)(0)是表示匹配整個(gè)表達(dá)式內(nèi)容,當(dāng)然也可以指定多個(gè),則會(huì)返回一個(gè)元組數(shù)據(jù)。 groupdict():這個(gè)方法會(huì)返回一個(gè)字典,其中字典的 KEY 是命名的組名,VALUE 為組名對(duì)應(yīng)獲取的內(nèi)容。 groups():該方法會(huì)返回一個(gè)包含所有捕獲內(nèi)容的子分組的元組,如果指定了默認(rèn)值,則這個(gè)值就會(huì)作為沒有獲取到的內(nèi)容的值。 lastgroup():該方法用于獲取最后一個(gè)匹配到內(nèi)容的組名。 lastindex():該方法會(huì)返回最后一個(gè)匹配到內(nèi)容的組編號(hào)。 start():該方法用于指定匹配內(nèi)容子分組是從字串的哪個(gè)位置開始匹配的,如果沒有匹配則返回 -1。 end():該方法用于返回當(dāng)前匹配對(duì)象子分組是從哪個(gè)位置匹配結(jié)束的,如果沒有匹配則返回 -1。 span():該方法會(huì)返回一個(gè)二元組,內(nèi)容為 (start(), end()) 的返回值。 pos():該方法用于搜索字符串的開頭起始位置。 endpos():該方法用于搜索字符串的結(jié)束末尾位置。
07 常用正則表達(dá)式
英文和數(shù)字: ^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$ 中文、英文、數(shù)字包括下劃線: ^[\u4E00-\u9FA5A-Za-z0-9_]+$ Email地址: ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 手機(jī)號(hào)碼: ^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ 身份證號(hào)碼: (^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$) 空白行:\n\s*\r 日期格式:^\d{4}-\d{1,2}-\d{1,2} 復(fù)雜密碼: ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$ 域名: [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
08 總結(jié)


評(píng)論
圖片
表情
