正則表達(dá)式

概述

世界上信息非常多几苍,而因?yàn)殛P(guān)注信息有限∈唇現(xiàn)在需要把關(guān)注的信息提取出來挎峦,香追,此時(shí)就用一種表達(dá)式對(duì)數(shù)據(jù)進(jìn)行提取。正則表達(dá)式就是其中的一種坦胶,在python中還有beautifulsoup透典、xpath等等

原子

原子是正則中最基本的組成單位,每個(gè)表達(dá)式至少包含一個(gè)原子顿苇,原子類型有:

  1. 普通字符作為原子
  2. 非打印字符作為原子
  3. 通用字符作為原子
  4. 原子表
import re #導(dǎo)入正則

#普通字符為原子
string = "ilovepython"
pat = "py"
rst = re.search(pat,string)
print(rst)

#非打印字符作為原子
string2 = '''
wo
xi
huan
python
!
'''
pat2 = "\n"
rst2 = re.search(pat2,string2)
print(rst2)

常用的通用字符

\w 字母峭咒、數(shù)據(jù)、下劃線
\W 除字母纪岁、數(shù)字凑队、下劃線
\d 十進(jìn)制數(shù)字
\s 除十進(jìn)制數(shù)字
\S 空白字符

原子表

import re
string = "hellopython"
pat = "ll[aoc]p"
rst = re.search(pat,string)
print(rst)

這里的原子表表示在該列表里面匹配任意一個(gè)有效字符,然后返回

元字符

. 匹配除了換行符的任意字符
^ 匹配開始位置
$ 匹配結(jié)束位置
*代表前邊的原子重復(fù)出現(xiàn)0次幔翰、1次或者多次
?代表前邊的原子重復(fù)出現(xiàn)0次或者1次
+代表前邊的原子重復(fù)出現(xiàn)1次或者多次
[n] 恰好出現(xiàn)n次
[n,] 至少出現(xiàn)n次
[n,m] 至少n次漩氨,最多m次
| 模式選擇符
() 單元模塊

模式修正符

所謂的模式修正符,即可以在不改變正則表達(dá)式的情況下遗增,通過模式修政符改變正則表達(dá)式的含義叫惊,從而實(shí)現(xiàn)匹配結(jié)果的調(diào)整等功能。

I 匹配時(shí)忽略大小寫
M 多行匹配
L 本地化識(shí)別匹配
U unicode
S 讓.匹配包括換行

string = "Python"
pat = "pyt"
rst = re.search(pat,string,re.I) #忽略大小寫
print(rst)

貪婪模式與懶惰模式

貪婪模式的核心就是盡可能多的匹配做修,而懶惰模式就是盡可能少的匹配霍狰。

#貪婪模式
string = "Pythony"
pat = "p.*y"
rst = re.search(pat,string,re.I) #默認(rèn)貪婪模式抡草,匹配多個(gè)結(jié)果返回
print(rst)

#懶惰模式
string = "Pythony"
pat = "p.*y"
rst = re.search(pat,string,re.I) #默認(rèn)貪婪模式,匹配多個(gè)結(jié)果返回
print(rst)

正則表達(dá)式的函數(shù)

本身不會(huì)實(shí)現(xiàn)任何功能蚓耽,只是進(jìn)行匹配

re.match()

從開頭開始匹配

#匹配不成功
string = "Python"
pat = "oyt"
rst = re.match(pat,string,re.I) #忽略大小寫
print(rst)

#成功匹配
string = "Python"
pat = "pyt"
rst = re.match(pat,string,re.I) #忽略大小寫
print(rst)

re.search()

從任意地方開始匹配

全局匹配

全局匹配格式
re.compile(正則表達(dá)式).findall(數(shù)據(jù))

string = "PythonyPypsdddfypdfgfdy"
pat = "p.*?y"
rst = re.compile(pat).findall(string)
print(rst)

常見的實(shí)例

匹配網(wǎng)址(.com或者.cn)

string = "(<a 
pat = "[a-zA-Z]+://[^\s]*[.com|.cn]"
rst = re.compile(pat).findall(string)
print(rst)

匹配電話號(hào)碼

string4 = "as010-27302284dhscn0933-2710228kdwlnckdshidfohwiohios"
pat4 = "\d{4}-\d{7}|\d{3}-\d{8}"
rst4 = re.compile(pat4).findall(string4)
print(rst4)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末渠牲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子步悠,更是在濱河造成了極大的恐慌签杈,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鼎兽,死亡現(xiàn)場(chǎng)離奇詭異答姥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谚咬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門鹦付,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人择卦,你說我怎么就攤上這事敲长。” “怎么了秉继?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵祈噪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我尚辑,道長(zhǎng)辑鲤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任杠茬,我火速辦了婚禮月褥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瓢喉。我一直安慰自己宁赤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布栓票。 她就那樣靜靜地躺著礁击,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逗载。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天链烈,我揣著相機(jī)與錄音厉斟,去河邊找鬼。 笑死强衡,一個(gè)胖子當(dāng)著我的面吹牛擦秽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼感挥,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼缩搅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起触幼,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤硼瓣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后置谦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堂鲤,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年媒峡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瘟栖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谅阿,死狀恐怖半哟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情签餐,我是刑警寧澤寓涨,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站贱田,受9級(jí)特大地震影響缅茉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜男摧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一蔬墩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耗拓,春花似錦拇颅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至竿刁,卻和暖如春黄锤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背食拜。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工鸵熟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人负甸。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓痹届,卻偏偏與公主長(zhǎng)得像打月,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奏篙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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

  • 正則表達(dá)式到底是什么東西报破?字符是計(jì)算機(jī)軟件處理文字時(shí)最基本的單位,可能是字母充易,數(shù)字,標(biāo)點(diǎn)符號(hào)盹靴,空格,換行符稿静,漢字等...
    獅子挽歌閱讀 2,147評(píng)論 0 9
  • `>本文是 Jan Goyvaerts 為 RegexBuddy 寫的教程的譯文改备,版權(quán)歸原作者所有 在本文中講述了...
    極客圈閱讀 2,078評(píng)論 0 5
  • 注:本篇文章只為方便查看,特此保留悬钳,如有冒犯,敬請(qǐng)諒解D础!滞诺! 本文目標(biāo) 30分鐘內(nèi)讓你明白正則表達(dá)式是什么,并對(duì)它...
    阿杰Alex閱讀 1,483評(píng)論 0 10
  • 原文:http://www.jb51.net/tools/zhengze.html 然后強(qiáng)迫癥如我习霹,因?yàn)槲遗戮W(wǎng)頁哪...
    你再不來我要下雪了閱讀 836評(píng)論 1 6
  • Python中的正則表達(dá)式(re) import rere.match #從開始位置開始匹配炫隶,如果開頭沒有則無re...
    BigJeffWang閱讀 7,081評(píng)論 0 99