Python正則表達式——Re模塊

正則表達式

字符匹配

普通字符:大多數(shù)字符和字母都會和自身匹配
元字符:.^$*+?{}[]|()\

re模塊

re是python中的正則表達式模塊,re模塊中包含了正則表達式的語法

API方法

  • findAll() 按照指定的模式查找所有的符合的元素
  • search() 尋找到第一個符合模式的元素就會停止尋找,會返回一個對象
  • compile(reg) 先將正則表達式編譯為一個對象伊佃,然后再使用編譯后的對象調(diào)用p.search p.findAll() 后跟要匹配的字符串
  • sub() 還需要一個額外的參數(shù)replacement窜司,它會把source中所有匹配的pattern替換成replacement
rep = re.search('aaa','aaacccaaa')
print(rep.group())

元字符解釋

  • . 代表除換行符(\n)外的任意字符,只能代指任意一個字符
  • ^ 匹配開頭
  • $ 匹配結(jié)束
  • * 重復(fù)匹配 表示* 前面的元素出現(xiàn)0到多次
re.findall('a*','aaaabbbb')
    • 表示匹配1到多次航揉,至少有1次
  • 塞祈?表示匹配0到1次,至多1次
  • {n帅涂,m}表示匹配n到m次 貪婪匹配
pre(m) m個連續(xù)的pre
pre(m,n) m到n個連續(xù)的pre,盡可能多地匹配
pre(m,n)? m到n個連續(xù)的pre议薪,盡可能少的匹配

  • []字符集,字符集內(nèi)的內(nèi)容代表范圍漠秋,[m,n]表示m或者是n的一個 [^n]表示匹配除n以外的
    字符集[]還有取消元字符的特殊功能笙蒙,在[]中的元字符沒有特殊功能的定義 例如 [*] 中的 * 就代表 * 這個字符 -除外
  • () 分組功能作為一個整體
  • | 或者
expr1|expr2 匹配expr1或expr2
[a-z] 表示a-z范圍中的任意一個字母
  • \ 反斜杠后邊跟元字符去除特殊功能,反斜杠后跟普通字符實現(xiàn)特殊功能
    • \d 代表數(shù)字 相當于[0-9]
    • \D 匹配任何非數(shù)字字符 相當于[^0-9]
    • \s 匹配任何空白字符 [\t\n\r\f\v]
    • \S 匹配任何非空白字符 [^ \t\n\r\f\v]
    • \w 匹配任何字母數(shù)字字符 [a-zA-Z0-9]
    • \W 匹配任何非字母數(shù)字字符 [^a-zA-Z0-9]
    • \b 匹配一個特殊字符的( 庆锦,#¥等)邊界捅位。
    • \B 匹配非單詞邊界

Python使用正則表達式

使用正則表達式,相關(guān)的功能都位于標準庫模塊re中搂抒。需要先定義一個用于匹配的模式字符串以及一個匹配的對象:源字符串

result = re.match('You','Youareme')

對于更加復(fù)雜的匹配艇搀,可以先對模式進行編譯以加快匹配速度,然后就可以直接使用編譯好的模式進行匹配

>>> youpattern = re.compile('You')
>>> youpattern.match('You are mine')
<_sre.SRE_Match object; span=(0, 3), match='You'>

使用match()進行準確匹配

判斷單詞'Young'是以單詞'You'開頭

>>> source = 'Young'
>>> m = re.match('You',source)
>>> if m:
...     print(m.group())
... 
You
  • match()函數(shù)用于查看源是否以指定模式開頭求晶,search()可以檢測任何位置的匹配
>>> mm = re.search('ung',source)
>>> if mm:
...     print(mm.group())
... 
ung

使用findall()尋找所有匹配

findall()會返回指定的模式串在源串中出現(xiàn)的所有列表

>>> source_all = 'hello hello hello how are you'
>>> m = re.find
>>> m = re.findall('o',source_all)
>>> m
['o', 'o', 'o', 'o', 'o']

使用split() 按匹配切分

split()將一個字符串切分成由一系列子串組成的列表

>>> m = re.split('l',source_all)
>>> m
['he', '', 'o he', '', 'o he', '', 'o how are you']

使用sub()替換匹配

使用sub替換匹配和字符串的replace有些類似焰雕,只不過使用的是模式而不是文本串

>>> m = re.sub('l','?',source_all)
>>> m
'he??o he??o he??o how are you'

定義模式匹配的輸出

當使用match()或search()時,所有的匹配會以m.group()的形式返回到對象m中芳杏。如果使用括號將自己的某一模式包裹起來矩屁,括號中模式匹配得到的結(jié)果歸入自己的froup中,如果調(diào)用m.groups()可以得到包含這些匹配的元組爵赵,使用(? P <name> expr) 這樣的模式會匹配expr吝秕,并將匹配結(jié)果存儲到名為name的組中

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市空幻,隨后出現(xiàn)的幾起案子烁峭,更是在濱河造成了極大的恐慌,老刑警劉巖秕铛,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件约郁,死亡現(xiàn)場離奇詭異,居然都是意外死亡但两,警方通過查閱死者的電腦和手機鬓梅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镜遣,“玉大人己肮,你說我怎么就攤上這事士袄。” “怎么了谎僻?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵娄柳,是天一觀的道長。 經(jīng)常有香客問我艘绍,道長赤拒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任诱鞠,我火速辦了婚禮挎挖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘航夺。我一直安慰自己蕉朵,他們只是感情好,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布阳掐。 她就那樣靜靜地躺著始衅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缭保。 梳的紋絲不亂的頭發(fā)上汛闸,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天,我揣著相機與錄音艺骂,去河邊找鬼诸老。 笑死,一個胖子當著我的面吹牛钳恕,可吹牛的內(nèi)容都是我干的别伏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼忧额,長吁一口氣:“原來是場噩夢啊……” “哼畸肆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宙址,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎调卑,沒想到半個月后抡砂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡恬涧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年注益,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溯捆。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡丑搔,死狀恐怖厦瓢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情啤月,我是刑警寧澤煮仇,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站谎仲,受9級特大地震影響浙垫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜郑诺,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一夹姥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辙诞,春花似錦辙售、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至封拧,卻和暖如春志鹃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泽西。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工曹铃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捧杉。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓陕见,卻偏偏與公主長得像,于是被迫代替她去往敵國和親味抖。 傳聞我的和親對象是個殘疾皇子评甜,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

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

  • re模塊手冊 本模塊提供了和Perl里的正則表達式類似的功能,不關(guān)是正則表達式本身還是被搜索的字符串仔涩,都可以...
    喜歡吃栗子閱讀 4,002評論 0 13
  • 廢墟 一忍坷、 一個三等兵, 我拖著虛零氣息熔脂, 耷拉在碎瓦裂磚上佩研。 就讓戰(zhàn)火 迷沒眼神, 就讓炮吼 沖撞腦境霞揉, 就讓硝...
    石莨閱讀 282評論 0 3
  • 再見旬薯,壞情緒之櫥柜上的小鐘,寓意:成功沒有想象的那么難
    朱宇頡閱讀 196評論 0 0
  • 相爭于市井硕舆,不如相忘于山林。 2016年十一月底的時候骤公,我曾獨自走過這條穿越路線抚官,即從德欽的茨中翻越地處“世界自然...
    木下亦佛閱讀 5,065評論 27 32
  • 這天是個平凡的日子,平凡得我都記不清一個路人的臉淋样。太陽透過樹枝照射在青石板上耗式,斑駁,安靜趁猴,慵懶刊咳。無所事事的我在廣場...
    安與城閱讀 225評論 0 1