Python正則表達(dá)式

<h1><strong>一 . 正則表達(dá)式中常用的字符含義<strong><h1>
<h1><strong>二 . re模塊中常用的功能函數(shù)<strong><h1>

<h2>一 . 正則表達(dá)式中常用的字符含義<h2>
下面是Python中正則表達(dá)式的一些匹配規(guī)則诊县,圖片資料來自CSDN

image.png

這里需要強調(diào)一下反斜杠\的作用:

1 反斜杠后邊跟元字符去除特殊功能讲弄;(即將特殊字符轉(zhuǎn)義成普通字符)
2 反斜杠后邊跟普通字符實現(xiàn)特殊功能;(即預(yù)定義字符)
3 引用序號對應(yīng)的字組所匹配的字符串依痊。

<h1>>二 . re模塊中常用的功能函數(shù)<h1>
(1)re.match(pattern, string[, flags])

這個方法將會從string(我們要匹配的字符串)的開頭開始避除,嘗試匹配pattern,一直向后匹配,如果遇到無法匹配的字符驹饺,立即返回None钳枕,如果匹配未結(jié)束已經(jīng)到達(dá)string的末尾,也會返回None赏壹。兩個結(jié)果均表示匹配失敗鱼炒,否則匹配pattern成功,同時匹配終止蝌借,不再對string向后匹配昔瞧。下面我們通過一個例子理解一下

# -*- coding: utf-8 -*-
 
#導(dǎo)入re模塊
import re
 
# 將正則表達(dá)式編譯成Pattern對象,注意hello前面的r的意思是“原生字符串”
pattern = re.compile(r'hello')
 
# 使用re.match匹配文本菩佑,獲得匹配結(jié)果自晰,無法匹配時將返回None
result1 = re.match(pattern,'hello')
result2 = re.match(pattern,'helloo CQC!')
result3 = re.match(pattern,'helo CQC!')
result4 = re.match(pattern,'hello CQC!')
 
#如果1匹配成功
if result1:
    # 使用Match獲得分組信息
    print result1.group()
else:
    print '1匹配失敗稍坯!'
 
 
#如果2匹配成功
if result2:
    # 使用Match獲得分組信息
    print result2.group()
else:
    print '2匹配失敵贶瘛!'
 
 
#如果3匹配成功
if result3:
    # 使用Match獲得分組信息
    print result3.group()
else:
    print '3匹配失斍朴础混巧!'
 
#如果4匹配成功
if result4:
    # 使用Match獲得分組信息
    print result4.group()
else:
    print '4匹配失敗勤揩!'

結(jié)果

hello
hello
3匹配失敻古舌界!
hello

匹配分析

1.第一個匹配,pattern正則表達(dá)式為’hello’,我們匹配的目標(biāo)字符串string也為hello羡洁,從頭至尾完全匹配牵舱,匹配成功九巡。

2.第二個匹配帅腌,string為helloo CQC,從string頭開始匹配pattern完全可以匹配遮糖,pattern匹配結(jié)束箱残,同時匹配終止,后面的o CQC不再匹配止吁,返回匹配成功的信息被辑。

3.第三個匹配,string為helo CQC敬惦,從string頭開始匹配pattern盼理,發(fā)現(xiàn)到 ‘o’ 時無法完成匹配,匹配終止俄删,返回None

4.第四個匹配宏怔,同第二個匹配原理奏路,即使遇到了空格符也不會受影響。

我們還看到最后打印出了result.group()臊诊,這個是什么意思呢鸽粉?下面我們說一下關(guān)于match對象的的屬性和方法
Match對象是一次匹配的結(jié)果,包含了很多關(guān)于此次匹配的信息抓艳,可以使用Match提供的可讀屬性或方法來獲取這些信息触机。

(2)re.search(pattern, string[, flags])

search方法與match方法極其類似,區(qū)別在于match()函數(shù)只檢測re是不是在string的開始位置匹配玷或,search()會掃描整個string查找匹配儡首,match()只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話偏友,match()就返回None蔬胯。同樣,search方法的返回對象同樣match()返回對象的方法和屬性位他。我們用一個例子感受一下

import re
 
# 將正則表達(dá)式編譯成Pattern對象
pattern = re.compile(r'world')
# 使用search()查找匹配的子串氛濒,不存在能匹配的子串時將返回None
# 這個例子中使用match()無法成功匹配
match = re.search(pattern,'hello world!')
if match:
    # 使用Match獲得分組信息
    print match.group()
### 輸出 ###
# world

(3)re.split(pattern, string[, maxsplit])

按照能夠匹配的子串將string分割后返回列表。maxsplit用于指定最大分割次數(shù)鹅髓,不指定將全部分割舞竿。我們通過下面的例子感受一下。

 import re
pattern = re.compile(r'\d+')
print re.split(pattern,'one1two2three3four4')
 
### 輸出 ###
# ['one', 'two', 'three', 'four', '']

(4)re.findall(pattern, string[, flags])

搜索string迈勋,以列表形式返回全部能匹配的子串炬灭。我們通過這個例子來感受一下

 import re
pattern = re.compile(r'\d+')
print re.findall(pattern,'one1two2three3four4')
 
### 輸出 ###
# ['1', '2', '3', '4']

(5)re.finditer(pattern, string[, flags])

搜索string醋粟,返回一個順序訪問每一個匹配結(jié)果(Match對象)的迭代器靡菇。我們通過下面的例子來感受一下

import re
pattern = re.compile(r'\d+')
for m in re.finditer(pattern,'one1two2three3four4'):
    print m.group(),
 
### 輸出 ###
# 1 2 3 4

(6)re.sub(pattern, repl, string[, count])

使用repl替換string中每一個匹配的子串后返回替換后的字符串。
當(dāng)repl是一個字符串時米愿,可以使用\id或\g厦凤、\g引用分組,但不能使用編號0育苟。
當(dāng)repl是一個方法時较鼓,這個方法應(yīng)當(dāng)只接受一個參數(shù)(Match對象),并返回一個字符串用于替換(返回的字符串中不能再引用分組)违柏。
count用于指定最多替換次數(shù)博烂,不指定時全部替換。

 import re
pattern = re.compile(r'(\w+) (\w+)')
s = 'i say, hello world!'
 
print re.sub(pattern,r'\2 \1', s)
 
def func(m):
    return m.group(1).title() + ' ' + m.group(2).title()
 
print re.sub(pattern,func, s)
 
### output ###
# say i, world hello!
# I Say, Hello World!

(7)re.subn(pattern, repl, string[, count])

返回 (sub(repl, string[, count]), 替換次數(shù))漱竖。

 import re
pattern = re.compile(r'(\w+) (\w+)')
s = 'i say, hello world!'
 
print re.subn(pattern,r'\2 \1', s)
 
def func(m):
    return m.group(1).title() + ' ' + m.group(2).title()
 
print re.subn(pattern,func, s)
 
### output ###
# ('say i, world hello!', 2)
# ('I Say, Hello World!', 2)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末禽篱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子馍惹,更是在濱河造成了極大的恐慌躺率,老刑警劉巖玛界,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悼吱,居然都是意外死亡慎框,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門后添,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笨枯,“玉大人,你說我怎么就攤上這事吕朵×源迹” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵努溃,是天一觀的道長硫嘶。 經(jīng)常有香客問我,道長梧税,這世上最難降的妖魔是什么沦疾? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮第队,結(jié)果婚禮上哮塞,老公的妹妹穿的比我還像新娘。我一直安慰自己凳谦,他們只是感情好忆畅,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尸执,像睡著了一般家凯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上如失,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天绊诲,我揣著相機與錄音,去河邊找鬼褪贵。 笑死掂之,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脆丁。 我是一名探鬼主播世舰,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼槽卫!你這毒婦竟也來了跟压?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤晒夹,失蹤者是張志新(化名)和其女友劉穎裆馒,沒想到半個月后姊氓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡喷好,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年翔横,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梗搅。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡禾唁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出无切,到底是詐尸還是另有隱情荡短,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布哆键,位于F島的核電站掘托,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏籍嘹。R本人自食惡果不足惜闪盔,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辱士。 院中可真熱鬧泪掀,春花似錦、人聲如沸颂碘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽头岔。三九已至塔拳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間切油,已是汗流浹背蝙斜。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工名惩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留澎胡,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓娩鹉,卻偏偏與公主長得像攻谁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子弯予,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

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

  • re模塊手冊 本模塊提供了和Perl里的正則表達(dá)式類似的功能戚宦,不關(guān)是正則表達(dá)式本身還是被搜索的字符串,都可以...
    喜歡吃栗子閱讀 4,009評論 0 13
  • 本文介紹了Python對于正則表達(dá)式的支持锈嫩,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫的完整介紹及使用示例...
    Python程序媛閱讀 1,349評論 0 22
  • 1. 正則表達(dá)式基礎(chǔ) 1.1. 簡單介紹 正則表達(dá)式并不是Python的一部分受楼。正則表達(dá)式是用于處理字符串的強大工...
    隨風(fēng)化作雨閱讀 352評論 0 0
  • 說明 摘抄為主垦搬,忘記是在什么地方看見的原文了。原作者別打我艳汽,若你見了請聯(lián)系我猴贰,增加你的版權(quán)和鏈接描述 整體過程 P...
    明慢慢閱讀 1,017評論 0 8
  • 猶太人以聰明聞名 在猶太家庭中 書柜是放在床頭的 他們對書 對讀書的重視 遠(yuǎn)超很多國家 他們聰明有智慧 但智慧不是...
    芒果和芒果干閱讀 257評論 0 0