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

用正則表達(dá)式查找文本模式

1.正則表達(dá)式挥转,簡稱regex,Python中所有正則表達(dá)式的函數(shù)都在re模塊中

? ?\d 是一個(gè)正則表達(dá)式共屈,表示一位數(shù)字字符绑谣,即任何一位0 到9 的數(shù)字。

2.在Python中使用正則表達(dá)式的步驟:

? ? 1)使用import re導(dǎo)入正則表達(dá)式模塊

? ? 2)使用re.compile()函數(shù)創(chuàng)建一個(gè)regex對象(要使用原始字符串拗引,因?yàn)檎齽t表達(dá)式中通常包 含很多\借宵,因此,某些轉(zhuǎn)義字符會很麻煩矾削,而在字符串前加r壤玫,使其變成原始字符串,就可以避免哼凯,原始字符串不包括轉(zhuǎn)義字符)

? ? 3)向regex對象的search()方法傳入向查找的字符串欲间,它返回一個(gè)match對象

? ? 4)調(diào)用match對象的group方法,返回實(shí)際匹配文本的字符串

使用正則表達(dá)式匹配更多模式

? ?1.利用括號分組

? ? ? ?在正則表達(dá)式中加入括號進(jìn)行分組断部,然后利用group方法和groups方法獲得匹配的分組內(nèi)容猎贴。

? ? ? ? 正則表達(dá)式中的第一對括號是第1組,以此類推。向group方法中傳入整數(shù)1.嘱能。。虱疏。惹骂。。做瞪。就可以獲取匹配文本的不同部分对粪。

? ? ? ?向group方法中傳入整數(shù)0或者不傳入?yún)?shù),會獲取整個(gè)匹配的文本装蓬。

? ? ? ?想要一次獲取所有分組的匹配文本著拭,可以使用groups方法。因?yàn)間roups方法返回多個(gè)值的元組牍帚,所以可以使用多重賦值的技巧儡遮,每個(gè)值賦值個(gè)一個(gè)獨(dú)立的變量。

? ? ? ? ? 如果正則表達(dá)式中包括括號暗赶,可通過轉(zhuǎn)義字符實(shí)現(xiàn)鄙币。

?2.使用管道匹配多個(gè)分組

? ? ? 字符|稱為“管道”。希望匹配許多表達(dá)式中的一個(gè)時(shí)蹂随,就可以使用它十嘿。

? ? ? 例如,正則表達(dá)式r'Batman|Tina Fey'將匹配'Batman'或'Tina Fey'岳锁。

? ? ? 如果Batman 和Tina Fey 都出現(xiàn)在被查找的字符串中绩衷,第一次出現(xiàn)的匹配文本,將作為Match 對象返回激率。

? ? ? 也可以使用管道匹配多個(gè)模式中的一個(gè)咳燕,作為正則表達(dá)式中的一部分。

? ? ? ? ? ? 如果需要匹配真正的管道字符柱搜,就用倒斜杠轉(zhuǎn)義

3)使用問號實(shí)現(xiàn)可選匹配

? ? ? ? 字符迟郎?前面的分組表示可選,即問號前面的分組可出現(xiàn)零次或一次

? ? ? ? 要想匹配聪蘸?宪肖,可在?前加轉(zhuǎn)義字符\

? ? ? ? ? 正則表達(dá)式中的(wo)?和(\d\d\d-)?部分表明健爬,模式wo 和\d\d\d-是可選的分組控乾。該正則表達(dá)式匹配的文本中,wo 和\d\d\d-將出現(xiàn)零次或一次娜遵。

4)用星號匹配零次或多次

? ? *(稱為星號)意味著“匹配零次或多次”蜕衡,即星號之前的分組,可以在文本中出現(xiàn)任意次设拟。它可以完全不存在慨仿,或一次又一次地重復(fù)久脯。

5)用加號匹配一次或多次

? ? *意味著“匹配零次或多次”,+(加號)則意味著“匹配一次或多次”镰吆。星號不要求分組出現(xiàn)在匹配的字符串中帘撰,但加號不同,加號前面的分組必須“至少出現(xiàn)一次”万皿。這不是可選的摧找。

6)用花括號匹配特定次數(shù)

? ? ?關(guān)于匹配次數(shù):

? ? ? 花括號中是數(shù)字,表示匹配對應(yīng)數(shù)字次數(shù)牢硅。如(ha){3}表示匹配字符串'hahaha'蹬耘,但不會匹配'haha'

? ? ? 指定范圍,表示范圍內(nèi)的次數(shù)都是可選的减余。如(ha){3,5}可以匹配字符串'hahaha'综苔、'hahahaha'、'hahahahaha'

? ? ? 也可以不寫花括號中的第一個(gè)或第二個(gè)數(shù)字位岔,不限定最小值或最大值休里。例如,(Ha){3,}將匹配3 次或更多次實(shí)例赃承,(Ha){,5}將匹配0 到5 次實(shí)例

貪心和非貪心匹配

? ? ?Python 的正則表達(dá)式默認(rèn)是“貪心”的妙黍,這表示在有二義的情況下,它們會盡可能匹配最長的字符串瞧剖∈眉蓿花括號的“非貪心”版本匹配盡可能最短的字符串,即在結(jié)束的花括號后跟著一個(gè)問號抓于。

? ? 請注意做粤,問號在正則表達(dá)式中可能有兩種含義:聲明非貪心匹配或表示可選的分組。這兩種含義是完全無關(guān)的捉撮。

findall()方法

?除了search 方法外怕品,Regex 對象也有一個(gè)findall()方法。

?search()將返回一個(gè)Match 對象巾遭,包含被查找字符串中的“第一次”匹配的文本肉康,

?findall()方法將返回一組字符串,包含被查找字符串中的所有匹配

findall()方法的返回結(jié)果:

1.如果調(diào)用在一個(gè)沒有分組的正則表達(dá)式上灼舍,例如\d\d\d-\d\d\d-\d\d\d\d吼和,方法findall()將返回一個(gè)匹配字符串的列表,例如['415-555-9999', '212-555-0000']骑素。

2.如果調(diào)用在一個(gè)有分組的正則表達(dá)式上炫乓,例如(\d\d\d)-(\d\d\d)-(\d\d\d\d),方法findall()將返回一個(gè)字符串的元組的列表(每個(gè)分組對應(yīng)一個(gè)字符串),例如[('415', '555', '1122'), ('212', '555', '0000')]末捣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侠姑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子箩做,更是在濱河造成了極大的恐慌结借,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卒茬,死亡現(xiàn)場離奇詭異,居然都是意外死亡咖熟,警方通過查閱死者的電腦和手機(jī)圃酵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來馍管,“玉大人郭赐,你說我怎么就攤上這事∪贩校” “怎么了缨恒?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵稽荧,是天一觀的道長。 經(jīng)常有香客問我,道長叶洞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任涉瘾,我火速辦了婚禮要出,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘倒得。我一直安慰自己泻红,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布霞掺。 她就那樣靜靜地躺著谊路,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菩彬。 梳的紋絲不亂的頭發(fā)上缠劝,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機(jī)與錄音骗灶,去河邊找鬼剩彬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛矿卑,可吹牛的內(nèi)容都是我干的喉恋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼轻黑!你這毒婦竟也來了糊肤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤氓鄙,失蹤者是張志新(化名)和其女友劉穎馆揉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抖拦,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡升酣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了态罪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片噩茄。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖复颈,靈堂內(nèi)的尸體忽然破棺而出绩聘,到底是詐尸還是另有隱情,我是刑警寧澤耗啦,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布凿菩,位于F島的核電站,受9級特大地震影響帜讲,放射性物質(zhì)發(fā)生泄漏衅谷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一似将、第九天 我趴在偏房一處隱蔽的房頂上張望会喝。 院中可真熱鬧,春花似錦玩郊、人聲如沸肢执。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽预茄。三九已至,卻和暖如春侦厚,著一層夾襖步出監(jiān)牢的瞬間耻陕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工刨沦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诗宣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓想诅,卻偏偏與公主長得像召庞,于是被迫代替她去往敵國和親岛心。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

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

  • 推薦幾個(gè)正則表達(dá)式編輯器 Debuggex :https://www.debuggex.com/ PyRegex:...
    木易林1閱讀 11,493評論 9 151
  • 正則表達(dá)式到底是什么東西篮灼?字符是計(jì)算機(jī)軟件處理文字時(shí)最基本的單位忘古,可能是字母,數(shù)字诅诱,標(biāo)點(diǎn)符號髓堪,空格,換行符娘荡,漢字等...
    獅子挽歌閱讀 2,147評論 0 9
  • 幾個(gè)正則表達(dá)式編輯器 Debuggex :https://www.debuggex.com/ PyRegex:ht...
  • 初衷:看了很多視頻干旁、文章,最后卻通通忘記了炮沐,別人的知識依舊是別人的争群,自己卻什么都沒獲得。此系列文章旨在加深自己的印...
    DCbryant閱讀 4,009評論 0 20
  • 曹石村是長江邊上一個(gè)極不起眼的偏遠(yuǎn)村落央拖,方圓數(shù)十里,湖泊眾多鹉戚,地廣人稀鲜戒。如果不是因?yàn)槭a(chǎn)蚊子,不太可能有外人知道它...
    斷鸝閱讀 1,981評論 191 133