python 正則表達(dá)式


正則表達(dá)式是一種用來(lái)匹配字符串的強(qiáng)有力的武器疙筹。它的設(shè)計(jì)思想是用一種描述性的語(yǔ)言來(lái)給字符串定義一個(gè)規(guī)則沛硅,凡是符合規(guī)則的字符串,我們就認(rèn)為它“匹配”了扎拣,否則赴肚,該字符串就是不合法的素跺。


因?yàn)檎齽t表達(dá)式也是用字符串表示的二蓝,所以,我們要首先了解如何用字符來(lái)描述字符指厌。

正則表達(dá)式匹配:

如果直接給出字符刊愚,就是精確匹配。

?\d 可以匹配一個(gè)數(shù)字

\w 可以匹配一個(gè)字母或數(shù)字

?.?可以匹配任意字符


要匹配變長(zhǎng)的字符踩验,在正則表達(dá)式中:

用 * 表示任意個(gè)字符(包括0個(gè))

用 + 表示至少一個(gè)字符

用 ? 表示0個(gè)或1個(gè)字符

用 {n} 表示n個(gè)字符

用 {n,m} 表示n-m個(gè)字符

特殊字符 要用'\'轉(zhuǎn)義


正則表達(dá)式實(shí)例:

實(shí)例1:

\d{3}\s+\d{3,8}

\d{3} 表示匹配3個(gè)數(shù)字 ?例如010

\s 匹配一個(gè)空格或tab鸥诽,\s+表示至少有一個(gè)空格 例如 ‘ ’

\d{3商玫,8} 表示3-8個(gè)數(shù)字,例如‘1234567’


實(shí)例2:

‘0574-65972291’

\d{4}\-\d{4,8}

\w

正則表達(dá)式進(jìn)階:

要做更精確地匹配牡借,可以用 [ ] 表示范圍


A|B 可以匹配A或B拳昌,所以(P|p)ython可以匹配'Python'或者'python'

^表示行的開(kāi)頭,^\d表示必須以數(shù)字開(kāi)頭钠龙,$表示行的結(jié)束炬藤,\d$表示必須以數(shù)字結(jié)束。


re模塊

Python提供re模塊碴里,包含所有正則表達(dá)式的功能沈矿。由于Python的字符串本身也用 \ 轉(zhuǎn)義,因此使用Python的r前綴咬腋,就不用考慮轉(zhuǎn)義的問(wèn)題了羹膳。

例如: s = r ' ABC\-001 '

案例:

match( )方法?判斷是否匹配,如果匹配成功根竿,返回Match對(duì)象陵像,否則返回None。



正則切分字符串

用正則表達(dá)式切分字符串比用固定的字符更靈活寇壳,請(qǐng)看正常的切分代碼

>>> 'a b ?c'.split(' ')

['a', 'b', '', '', 'c']

>>>re.split(r'\s+','a b? c')
['a','b','c']

如果用戶輸入了一組標(biāo)簽蠢壹,下次記得用正則表達(dá)式來(lái)把不規(guī)范的輸入轉(zhuǎn)化成正確的數(shù)組


分組

除了簡(jiǎn)單地判斷是否匹配之外九巡,正則表達(dá)式還有提取子串的強(qiáng)大功能图贸。用 ( ) 表示的就是要提取的分組(Group)



貪婪匹配

正則匹配默認(rèn)是貪婪匹配,也就是匹配盡可能多的字符冕广。

由于\d+采用貪婪匹配疏日,直接把后面的0全部匹配了,結(jié)果0*只能匹配空字符串了撒汉。

必須讓\d+采用非貪婪匹配(也就是盡可能少匹配)沟优,才能把后面的0匹配出來(lái),加個(gè)?就可以讓\d+采用非貪婪匹配:


編譯

當(dāng)我們?cè)赑ython中使用正則表達(dá)式時(shí)睬辐,re模塊內(nèi)部會(huì)干兩件事情:

1. 編譯正則表達(dá)式挠阁,如果正則表達(dá)式的字符串本身不合法,會(huì)報(bào)錯(cuò)溯饵;

2. 用編譯后的正則表達(dá)式去匹配字符串侵俗。


如果一個(gè)正則表達(dá)式要重復(fù)使用幾千次,出于效率的考慮丰刊,我們可以預(yù)編譯該正則表達(dá)式隘谣,接下來(lái)重復(fù)使用時(shí)就不需要編譯這個(gè)步驟了,直接匹配:


編譯后生成Regular Expression對(duì)象啄巧,由于該對(duì)象自己包含了正則表達(dá)式寻歧,所以調(diào)用對(duì)應(yīng)的方法時(shí)不用給出正則字符串掌栅。


筆記摘自:廖雪峰官網(wǎng):www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143193331387014ccd1040c814dee8b2164bb4f064cff000#0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市码泛,隨后出現(xiàn)的幾起案子猾封,更是在濱河造成了極大的恐慌,老刑警劉巖噪珊,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忘衍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡卿城,警方通過(guò)查閱死者的電腦和手機(jī)枚钓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瑟押,“玉大人搀捷,你說(shuō)我怎么就攤上這事《嗤” “怎么了嫩舟?”我有些...
    開(kāi)封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)怀偷。 經(jīng)常有香客問(wèn)我家厌,道長(zhǎng),這世上最難降的妖魔是什么椎工? 我笑而不...
    開(kāi)封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任饭于,我火速辦了婚禮,結(jié)果婚禮上维蒙,老公的妹妹穿的比我還像新娘掰吕。我一直安慰自己,他們只是感情好颅痊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布殖熟。 她就那樣靜靜地躺著,像睡著了一般斑响。 火紅的嫁衣襯著肌膚如雪菱属。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天舰罚,我揣著相機(jī)與錄音纽门,去河邊找鬼。 笑死沸停,一個(gè)胖子當(dāng)著我的面吹牛膜毁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播愤钾,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼瘟滨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了能颁?” 一聲冷哼從身側(cè)響起杂瘸,我...
    開(kāi)封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伙菊,沒(méi)想到半個(gè)月后败玉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镜硕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年运翼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兴枯。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡血淌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出财剖,到底是詐尸還是另有隱情悠夯,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布躺坟,位于F島的核電站沦补,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏咪橙。R本人自食惡果不足惜夕膀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望美侦。 院中可真熱鬧店诗,春花似錦、人聲如沸音榜。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赠叼。三九已至擦囊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嘴办,已是汗流浹背瞬场。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涧郊,地道東北人贯被。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親彤灶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子看幼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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

  • re模塊手冊(cè) 本模塊提供了和Perl里的正則表達(dá)式類似的功能,不關(guān)是正則表達(dá)式本身還是被搜索的字符串幌陕,都可以...
    喜歡吃栗子閱讀 4,009評(píng)論 0 13
  • 本文介紹了Python對(duì)于正則表達(dá)式的支持诵姜,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫(kù)的完整介紹及使用示例...
    Python程序媛閱讀 1,349評(píng)論 0 22
  • 1. 正則表達(dá)式基礎(chǔ) 1.1. 簡(jiǎn)單介紹 正則表達(dá)式并不是Python的一部分。正則表達(dá)式是用于處理字符串的強(qiáng)大工...
    隨風(fēng)化作雨閱讀 352評(píng)論 0 0
  • 01 對(duì)全世界的腫瘤科醫(yī)生而言搏熄,每年的ASCO(美國(guó)臨床腫瘤學(xué)會(huì)年會(huì))都是一個(gè)瞻仰巨星的最佳時(shí)機(jī)棚唆,這里的巨星就是那...
    愛(ài)留白閱讀 899評(píng)論 2 5
  • 懷孕 臨睡前八歲的大兒子蹦出來(lái)一句話:“媽媽我下午在菜場(chǎng)門口宵凌,看到墻上有一個(gè)避孕的東西≈购螅” 我怯懦地問(wèn):“那你知道...
    素素淡閱讀 532評(píng)論 6 3