Python學(xué)習(xí)筆記7—正則表達(dá)式之二

字符分類

常用字符分類的縮寫(xiě)代碼:

\d--------------0到9的任何數(shù)字

?\D--------------除0到9的數(shù)字以外的任何字符

?\w--------------任何字母匾委、數(shù)字或者下劃線字符(可以認(rèn)為是匹配單詞字符)

\W--------------除字母、數(shù)字和下劃線以外的字符

\s--------------空格驻襟、制表符或者換行符(可以認(rèn)為是匹配空白字符)

\S--------------除空格璧帝、制表符和換行符以外的任何字符

建立自己的字符分類

1捍岳、用方括號(hào)定義自己的字符分類

2、例如裸弦,字符分類[aeiouAEIOU]將匹配所有元音字符祟同,不論大小寫(xiě)

3、也可以使用短橫表示字母或數(shù)字的范圍理疙。例如,字符分類[a-zA-Z0-9]將匹配所有小寫(xiě)字母泞坦、大寫(xiě)字母和數(shù)字窖贤。

4、請(qǐng)注意贰锁,在方括號(hào)內(nèi)赃梧,普通的正則表達(dá)式符號(hào)不會(huì)被解釋。這意味著豌熄,你不需要前面加上倒斜杠轉(zhuǎn)義.授嘀、*、?或()字符锣险。例如蹄皱,字符分類將匹配數(shù)字0 到5 和一個(gè)句點(diǎn)。你不需要將它寫(xiě)成[0-5.]芯肤。

5巷折、通過(guò)在字符分類的左方括號(hào)后加上一個(gè)插入字符(^),就可以得到“非字符類”崖咨。非字符類將匹配不在這個(gè)字符類中的所有字符

插入字符和美元字符

1锻拘、可以在正則表達(dá)式的開(kāi)始處使用插入符號(hào)(^),表明匹配必須發(fā)生在被查找文本開(kāi)始處击蹲。

2署拟、類似地婉宰,可以再正則表達(dá)式的末尾加上美元符號(hào)($),表示該字符串必須以這個(gè)正則表達(dá)式的模式結(jié)束推穷。

3芍阎、可以同時(shí)使用^和$,表明整個(gè)字符串必須匹配該模式缨恒,也就是說(shuō)谴咸,只匹配該字符串的某個(gè)子集是不夠的。如果使用了^和$骗露,那么整個(gè)字符串必須匹配該正則表達(dá)式

通配字符

在正則表達(dá)式中岭佳,.(句點(diǎn))字符稱為“通配符”。它匹配除了換行之外的所有字符萧锉。

句點(diǎn)字符只匹配一個(gè)字符珊随,這就是為什么在前面的例子中,對(duì)于文本flat柿隙,只匹配lat叶洞。要匹配真正的句點(diǎn),就是用倒斜杠轉(zhuǎn)義禀崖。

1).*匹配

點(diǎn)-星將匹配除換行外的所有字符衩辟。句點(diǎn)字符表示“除換行外所有單個(gè)字符”,星號(hào)字符表示“前面字符出現(xiàn)零次或多次”波附。

點(diǎn)-星使用“貪心”模式:它總是匹配盡可能多的文本艺晴。要用“非貪心”模式匹配所有文本,就使用點(diǎn)-星和問(wèn)號(hào)掸屡。像和大括號(hào)一起使用時(shí)那樣封寞,問(wèn)號(hào)告訴Python 用非貪心模式匹配。

2)句點(diǎn)字符匹配所有字符

通過(guò)傳入re.DOTALL 作為re.compile()的第二個(gè)參數(shù)仅财,可以讓句點(diǎn)字符匹配所有字符狈究,包括換行字符。

不區(qū)分大小寫(xiě)的匹配

?要讓正則表達(dá)式不區(qū)分大小寫(xiě)盏求,可以向re.compile()傳入re.IGNORECASE 或re.I抖锥,作為第二個(gè)參數(shù)。

用sub()方法替換字符串

?1风喇、正則表達(dá)式不僅能找到文本模式宁改,而且能夠用新的文本替換掉這些模式。

2魂莫、Regex對(duì)象的sub()方法需要傳入兩個(gè)參數(shù)还蹲。第一個(gè)參數(shù)是一個(gè)字符串,用于取代發(fā)現(xiàn)的匹配。第二個(gè)參數(shù)是一個(gè)字符串谜喊,即正則表達(dá)式潭兽。sub()方法返回替換完成后的字符串。

3斗遏、有時(shí)候山卦,你可能需要使用匹配的文本本身,作為替換的一部分诵次。在sub()的第一個(gè)參數(shù)中账蓉,可以輸入\1、\2逾一、\3……铸本。表示“在替換中輸入分組1、2遵堵、3……的文本”箱玷。

例如,假定想要隱去密探的姓名陌宿,只顯示他們姓名的第一個(gè)字母锡足。要做到這一點(diǎn),可以使用正則表達(dá)式Agent(\w)\w壳坪,傳入r'\1*'作為sub()的第一個(gè)參數(shù)舶得。字符串中的\1 將由分組1 匹配的文本所替代,也就是正則表達(dá)式的(\w)分組弥虐。

管理復(fù)雜的正則表達(dá)式

如果要匹配的文本模式很簡(jiǎn)單扩灯,正則表達(dá)式就很好。但匹配復(fù)雜的文本模式霜瘪,可能需要長(zhǎng)的、費(fèi)解的正則表達(dá)式惧磺。你可以告訴re.compile()颖对,忽略正則表達(dá)式字符串中的空白符和注釋,從而緩解這一點(diǎn)磨隘。要實(shí)現(xiàn)這種詳細(xì)模式缤底,可以向re.compile()傳入變量re.VERBOSE,作為第二個(gè)參數(shù)番捂。

組合使用re.IGNORECASE个唧、re.DOTALL 和re.VERBOSE

re.compile()函數(shù)只接受一個(gè)值作為它的第二參數(shù)∩柙ぃ可以使用管道字符(|)將變量組合起來(lái)徙歼,從而繞過(guò)這個(gè)限制。管道字符在這里稱為“按位或”操作符。通過(guò)管道可以在re.compile()函數(shù)中使用以上三個(gè)變量魄梯。

正則表達(dá)式符號(hào)復(fù)習(xí)

?匹配零次或一次前面的分組桨螺。

?*匹配零次或多次前面的分組。

?+匹配一次或多次前面的分組酿秸。

?{n}匹配n 次前面的分組灭翔。

?{n,}匹配n 次或更多前面的分組。

?{,m}匹配零次到m 次前面的分組辣苏。

?{n,m}匹配至少n 次肝箱、至多m 次前面的分組。

?{n,m}?或*?或+?對(duì)前面的分組進(jìn)行非貪心匹配稀蟋。

?^spam 意味著字符串必須以spam 開(kāi)始煌张。

?spam$意味著字符串必須以spam 結(jié)束。

?.匹配所有字符糊治,換行符除外唱矛。

?\d、\w 和\s 分別匹配數(shù)字井辜、單詞和空格绎谦。

?\D、\W 和\S 分別匹配出數(shù)字粥脚、單詞和空格外的所有字符窃肠。

?[abc]匹配方括號(hào)內(nèi)的任意字符(諸如a、b 或c)刷允。

?[^abc]匹配不在方括號(hào)內(nèi)的任意字符冤留。



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市树灶,隨后出現(xiàn)的幾起案子纤怒,更是在濱河造成了極大的恐慌,老刑警劉巖天通,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泊窘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡像寒,警方通過(guò)查閱死者的電腦和手機(jī)烘豹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)诺祸,“玉大人携悯,你說(shuō)我怎么就攤上這事】瓯浚” “怎么了憔鬼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵龟劲,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我逊彭,道長(zhǎng)咸灿,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任侮叮,我火速辦了婚禮避矢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘囊榜。我一直安慰自己审胸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布卸勺。 她就那樣靜靜地躺著砂沛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪曙求。 梳的紋絲不亂的頭發(fā)上碍庵,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音悟狱,去河邊找鬼静浴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛挤渐,可吹牛的內(nèi)容都是我干的苹享。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼浴麻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼得问!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起软免,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宫纬,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后膏萧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體哪怔,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年向抢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胚委。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挟鸠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出亩冬,到底是詐尸還是另有隱情艘希,我是刑警寧澤硼身,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站覆享,受9級(jí)特大地震影響佳遂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撒顿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一丑罪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凤壁,春花似錦吩屹、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至唧席,卻和暖如春擦盾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淌哟。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工迹卢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绞绒。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓婶希,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蓬衡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子喻杈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容