【python进阶】_正则表达式
常見語法
點(diǎn)--匹配所有字符
???.?表示要匹配除了?換行符?之外的任何?單個(gè)?字符。
星號--重復(fù)匹配任意次
? ? *?表示匹配前面的子表達(dá)式任意次,包括0次。
加號--重復(fù)匹配多次
? ? +?表示匹配前面的子表達(dá)式一次或多次,不包括0次。
問號--匹配0-1次
? ? ??表示匹配前面的子表達(dá)式0次或1次
花括號--匹配指定次數(shù)
? ? ? ? ? 表達(dá)式 油{3}?就表示匹配 連續(xù)的 油?字 3次
? ? ? ? ? 表達(dá)式 油{3,4}?就表示匹配 連續(xù)的 油?字 至少3次,至多 4 次
貪婪模式與非貪婪模式
在正則表達(dá)式中, ‘*’, ‘+’, ‘?’ 都是貪婪地,使用他們時(shí),會(huì)盡可能多的匹配內(nèi)容
解決這個(gè)問題,就需要使用非貪婪模式,也就是在星號后面加上???
匹配某種字符類型
????????反斜杠后面接一些字符,表示匹配?某種類型?的一個(gè)字符。
????????\d 匹配0-9之間任意一個(gè)數(shù)字字符,等價(jià)于表達(dá)式 [0-9]
????????\D 匹配任意一個(gè)不是0-9之間的數(shù)字字符,等價(jià)于表達(dá)式 [^0-9]
????????\s 匹配任意一個(gè)空白字符,包括 空格、tab、換行符等,等價(jià)于表達(dá)式 [\t\n\r\f\v]
????????\S 匹配任意一個(gè)非空白字符,等價(jià)于表達(dá)式 [^ \t\n\r\f\v]
????????\w 匹配任意一個(gè)文字字符,包括大小寫字母、數(shù)字、下劃線,等價(jià)于表達(dá)式 [a-zA-Z0-9_]
????????缺省情況也包括 Unicode文字字符,如果指定 ASCII 碼標(biāo)記,則只包括ASCII字母
????????\W 匹配任意一個(gè)非文字字符,等價(jià)于表達(dá)式 [^a-zA-Z0-9_ ]
????????反斜杠也可以用在方括號里面,比如 [\s,.] 表示匹配 : 任何空白字符, 或者逗號,或者點(diǎn)
方括號--匹配幾個(gè)字符之一
??????方括號表示要匹配 指定的幾個(gè)字符之一 ,比如
? [abc]?可以匹配 a, b, 或者 c 里面的任意一個(gè)字符。等價(jià)于?[a-c]?。
? [a-c]?中間的 - 表示一個(gè)范圍從a 到 c。
? ? ?如果你想匹配所有的小寫字母,可以使用?[a-z]
? ? ?如果在方括號中使用?^?, 表示?非?方括號里面的字符集合,比如
? [^\d]?表示,選擇非數(shù)字的字符
起始、結(jié)尾位置、和單行、多行模式
??^?表示匹配文本的?開頭?位置。
? ? ? ? 正則表達(dá)式可以設(shè)定?單行模式?和?多行模式
????????如果是?單行模式?,表示匹配?整個(gè)文本?的開頭位置。
????????如果是?多行模式?,表示匹配?文本每行?的開頭位置。
? ?$?表示匹配文本的?結(jié)尾?位置。
????????如果是?單行模式?,表示匹配?整個(gè)文本?的結(jié)尾位置。
????????如果是?多行模式?,表示匹配?文本每行?的結(jié)尾位置。
p = re.compile(r'^\d+', re.M),注意,compile 的第二個(gè)參數(shù) re.M ,指明了使用多行模式
豎線--匹配其中之一
????????豎線在正則表達(dá)式的優(yōu)先級是最低的, 這就意味著,豎線隔開的部分是一個(gè)整體
????????比如?綠色|橙?表示 要匹配是?綠色?或者?橙?,
????????而不是?綠色?或者?綠橙
括號--分組
括號稱之為 正則表達(dá)式的 組選擇。
組?就是把 正則表達(dá)式 匹配的內(nèi)容 里面?其中的某些部分?標(biāo)記為某個(gè)組。
總結(jié)
以上是生活随笔為你收集整理的【python进阶】_正则表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【云计算】5_云存储产品介绍
- 下一篇: 【Python刷题】_7