爬蟲課程(五)|十分鐘學(xué)會(huì)使用正則表達(dá)式

一葵姥、為什么必須要有正則表達(dá)式

正則表達(dá)式(regular expression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個(gè)串是否含有某種子串舞丛、將匹配的子串替換或者從某個(gè)串中取出符合某個(gè)條件的子串等。

在我們使用xpath和css選擇器時(shí)只能取到html標(biāo)簽下的一段字符串,比如我們要取知乎回答下的時(shí)間走贪,有的是“發(fā)布于 13:57”,有的是“發(fā)布于 昨天 13:50”惑芭,還有的是“發(fā)布于 2016-03-17”坠狡。如果我們不用正則表達(dá)式,而用其他替代方案遂跟,比如多個(gè)if else擦秽,或者replace,處理起來是非常繁瑣的漩勤。

本文章將介紹幾種非常常用的特殊字符感挥,學(xué)會(huì)了使用這些字符將會(huì)解決98%爬蟲需要做字符串提取的工作。

二越败、正則表達(dá)式最常見的字符

1)特殊字符:就是一些有特殊含義的字符触幼。 $ () * + . [ ? \ ^ { |

2)限定符:用來指定正則表達(dá)式的一個(gè)給定組件必須要出現(xiàn)多少次才能滿足匹配。* + ? {n} {n,} {n,m}

3)定位符:用來描述字符串或單詞的邊界究飞。^ $

4)其他字符:\w \W \s \S \d

我先不介紹這些字符有什么含義置谦,我們直接進(jìn)入python示例

三堂鲤、正則表達(dá)式的簡(jiǎn)單應(yīng)用及python示例

3.1、介紹^ . * $的用法

1)^ 匹配輸入字符串開始的位置媒峡。

2). 匹配除換行符 \n 之外的任何單字符瘟栖。

3)* 匹配前面的子表達(dá)式零次或多次。

4)$ 匹配輸入字符串的結(jié)尾位置谅阿。

^ . * $的用法

3.2半哟、介紹() ?用法

1)()標(biāo)記一個(gè)子表達(dá)式的開始和結(jié)束位置。

2)?匹配前面的子表達(dá)式零次或一次签餐,或指明一個(gè)非貪婪限定符寓涨。

() ?用法

3.3、介紹+ {n} {n,} {n,m}用法

1)+匹配前面的子表達(dá)式一次或多次氯檐。例如戒良,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"冠摄。+ 等價(jià)于 {1,}糯崎。

2){n} n 是一個(gè)非負(fù)整數(shù)。匹配確定的 n 次河泳。例如沃呢,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個(gè) o乔询。

3){n,} n 是一個(gè)非負(fù)整數(shù)樟插。至少匹配n 次。例如竿刁,'o{2,}' 不能匹配 "Bob" 中的 'o'黄锤,但能匹配 "foooood" 中的所有 o。'o{1,}' 等價(jià)于 'o+'食拜。'o{0,}' 則等價(jià)于 'o*'鸵熟。

4){n,m} m 和 n 均為非負(fù)整數(shù),其中n <= m负甸。最少匹配 n 次且最多匹配 m 次流强。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個(gè) o呻待。'o{0,1}' 等價(jià)于 'o?'打月。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。

+ {n} {n,} {n,m}用法

3.4蚕捉、介紹|[123] [0-9] [^1]用法

1)|指明兩項(xiàng)之間的一個(gè)選擇奏篙。

2)[123] 只要是123中的其中一個(gè)即可。

3)[0-9] 只要是0-9中的任意數(shù)字即可。

4)[^1] 非秘通,只要不是1即可为严。

|[123] [0-9] [^1]

3.5、介紹\s \S \w \W \d用法

1)\s匹配任何空白字符肺稀,包括空格第股、制表符、換頁符等等话原。等價(jià)于 [ \f\n\r\t\v]夕吻。

2)\S匹配任何非空白字符。等價(jià)于 [^ \f\n\r\t\v]稿静。

3)\w 等價(jià)于[A-Za-z0-9_]梭冠。

4)\W 與\w相反辕狰。

5)\d 所有數(shù)字改备,等價(jià)于[0-9]。

\s \S \w \W \d
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蔓倍,一起剝皮案震驚了整個(gè)濱河市悬钳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌偶翅,老刑警劉巖默勾,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異聚谁,居然都是意外死亡母剥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門形导,熙熙樓的掌柜王于貴愁眉苦臉地迎上來环疼,“玉大人,你說我怎么就攤上這事朵耕§帕ィ” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵阎曹,是天一觀的道長伪阶。 經(jīng)常有香客問我,道長处嫌,這世上最難降的妖魔是什么栅贴? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮熏迹,結(jié)果婚禮上檐薯,老公的妹妹穿的比我還像新娘。我一直安慰自己癣缅,他們只是感情好厨剪,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布哄酝。 她就那樣靜靜地躺著,像睡著了一般祷膳。 火紅的嫁衣襯著肌膚如雪陶衅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天直晨,我揣著相機(jī)與錄音搀军,去河邊找鬼。 笑死勇皇,一個(gè)胖子當(dāng)著我的面吹牛罩句,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敛摘,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼门烂,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了兄淫?” 一聲冷哼從身側(cè)響起屯远,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捕虽,沒想到半個(gè)月后慨丐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泄私,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年房揭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晌端。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捅暴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斩松,到底是詐尸還是另有隱情伶唯,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布惧盹,位于F島的核電站乳幸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏钧椰。R本人自食惡果不足惜粹断,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嫡霞。 院中可真熱鬧瓶埋,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晕粪,卻和暖如春挤悉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背巫湘。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工装悲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尚氛。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓诀诊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阅嘶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子属瓣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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