Python初學者筆記(二):用白話講“正則表達式”入門奈应,看不懂算我輸!

正則表達式(Regular Expression)购披,又稱規(guī)則表達式杖挣。真不知道是哪個大哥翻譯的,很想狠揍他一頓刚陡,翻譯資料不是為了讓別人看懂的嗎惩妇?最討厭人為生造術語,提高入門者學習難度筐乳,沒辦法歌殃,現在已經約定俗成了,不過叫什么不重要蝙云,關鍵是理解內容氓皱。

正則表達式的作用:通過約定好的表達方式,讓程序在一大串內容里勃刨,找到我們需要挑出來的一小串內容波材。比如在“中華人民共和國”(大串)里找“人民”(小串)。

好比朵你,你要告訴機器人各聘,從一堆豆子里挑出你想要的紅豆、綠豆抡医、沙子或者蟲子躲因,但是要告訴機器人早敬,這些東西的特征。

正則表達式就是這些東西的特征怎么描述大脉。如果描述的不清楚搞监,可能找不到你需要的內容,甚至是找到錯誤的內容镰矿,比如騎白馬的不一定是王子琐驴,也有可能是唐僧。

為了配合后續(xù)的練習秤标,我們先來講一下re模塊的功能绝淡。

一、re模塊的功能

又暈了吧苍姜?re模塊就是本文開頭的Regular Expression縮寫啊牢酵。

為了使用re模塊,需要在Python中導入一下衙猪,即在第一行馍乙,先寫上:

import?re??

在re模塊里,常用的有四個功能match垫释、search丝格、findall、finditer棵譬,可以理解為挑豆子的四種方法显蝌。

根據英文可知,四種方法分別是:比較茫船,搜索琅束,找到全部扭屁,找到迭代器(又出一個術語算谈,真討厭)。

1料滥、match(比較)

公式:re.match(pattern, string[, flags])然眼,又暈了吧,翻譯成中文再看一下葵腹。

翻譯:re模塊.比較(想找的字符一小串高每,字符一大串[, 標志]),“標志”先不用了解践宴,主要指“表示不進行特殊指定鲸匿,比如忽略大小寫,指定語言等“阻肩。

解釋:只從大串中第一個字開始開始找小串带欢,找到一樣的字就成功了运授,返回匹配的對象位置和內容字樣,沒找到就說“None”乔煞。

舉例:

print(re.match("中",?"中華人民共和國"))??

print(re.match("華",?"中華人民共和國"))??

返回:

re.SRE_Match?object;?span=(0,?1),?match='中'>??

<None>??

這說明吁朦,“中”找到了,因為“中”是第一個字渡贾,而“華”是第二個字逗宜,返回“None”,同樣空骚,找兩個字也行纺讲,比如“中華”。第一個功能看懂了囤屹,后面的就容易了刻诊。

2、search(搜索)

公式:re.search(pattern, string[, flags])??

解釋:搜索大串中的小串牺丙,位置在哪都行则涯,但是只找第一串,會返回小串的位置和內容冲簿。

舉例:

print(re.search("中",?"中華人民共和國中央人民政府"))??

返回:

<_sre.SRE_Match?object;?span=(0,?1),?match='中'>??

3粟判、findall(找到全部)

公式:re.findall(pattern, string[, flags])??

解釋:返回大串中所有與小串相同的字符串,返回一個列表峦剔,也叫“數組”档礁。

舉例:

print(re.findall("中",?"中華人民共和國,中央人民政府"))

返回:

['中', '中']

怎么證明這是數組呢吝沫?運行type()函數即可呻澜。

X?=?re.findall("中",?"中華人民共和國,中央人民政府")??

print(type(X))??

print(X[0])??

print(X[1])??

返回:

中??

中??

4惨险、finditer(找到迭代器)

公式:re.finditer(pattern, string[, flags])??

解釋:小串中所有與大串相匹配的全部字串羹幸,返回形式為迭代器,還包括了小串在大串中的位置辫愉。

舉例:

X1?=?re.finditer("中",?"中華人民共和國中華人民共和國中華人民共和國")??

X2?=?X1.__iter__()??

print(X2)??

print(next(X2))??

print(next(X2))??

print(next(X2))??

返回:

<_sre.SRE_Match object; span=(0, 1), match='中'>

<_sre.SRE_Match object; span=(7, 8), match='中'>

<_sre.SRE_Match object; span=(14, 15), match='中'>

迭代器這個東西有點麻煩栅受,初學者暫時用不上,先看看運行結果吧恭朗,以后我們再具體講這個屏镊。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市痰腮,隨后出現的幾起案子而芥,更是在濱河造成了極大的恐慌,老刑警劉巖膀值,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棍丐,死亡現場離奇詭異弟翘,居然都是意外死亡,警方通過查閱死者的電腦和手機骄酗,發(fā)現死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門稀余,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人趋翻,你說我怎么就攤上這事睛琳。” “怎么了踏烙?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵师骗,是天一觀的道長。 經常有香客問我讨惩,道長辟癌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任荐捻,我火速辦了婚禮黍少,結果婚禮上,老公的妹妹穿的比我還像新娘处面。我一直安慰自己厂置,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布魂角。 她就那樣靜靜地躺著昵济,像睡著了一般。 火紅的嫁衣襯著肌膚如雪野揪。 梳的紋絲不亂的頭發(fā)上访忿,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音斯稳,去河邊找鬼海铆。 笑死,一個胖子當著我的面吹牛平挑,可吹牛的內容都是我干的游添。 我是一名探鬼主播系草,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼通熄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了找都?” 一聲冷哼從身側響起唇辨,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎能耻,沒想到半個月后赏枚,有當地人在樹林里發(fā)現了一具尸體亡驰,經...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年饿幅,在試婚紗的時候發(fā)現自己被綠了凡辱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡栗恩,死狀恐怖透乾,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情磕秤,我是刑警寧澤乳乌,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站市咆,受9級特大地震影響汉操,放射性物質發(fā)生泄漏。R本人自食惡果不足惜蒙兰,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一磷瘤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搜变,春花似錦膀斋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绩社,卻和暖如春摔蓝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背愉耙。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工贮尉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朴沿。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓猜谚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赌渣。 傳聞我的和親對象是個殘疾皇子魏铅,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354