<strike id="cakm0"></strike>
  • <button id="cakm0"><dl id="cakm0"></dl></button>
  • <samp id="cakm0"><tbody id="cakm0"></tbody></samp>
    <samp id="cakm0"><pre id="cakm0"></pre></samp><ul id="cakm0"></ul>
    <strike id="cakm0"></strike>
    <li id="cakm0"></li>
  • <ul id="cakm0"></ul>
  • 更多精彩內(nèi)容,歡迎關(guān)注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    Python常用的正則表達(dá)式處理函數(shù)詳解

    文檔

    Python常用的正則表達(dá)式處理函數(shù)詳解

    這篇文章主要介紹了Python常用的正則表達(dá)式處理函數(shù),正則表達(dá)式是一個(gè)特殊的字符序列,用于簡潔表達(dá)一組字符串特征,檢查一個(gè)字符串是否與某種模式匹配,使用起來十分方便。本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值。
    推薦度:
    導(dǎo)讀這篇文章主要介紹了Python常用的正則表達(dá)式處理函數(shù),正則表達(dá)式是一個(gè)特殊的字符序列,用于簡潔表達(dá)一組字符串特征,檢查一個(gè)字符串是否與某種模式匹配,使用起來十分方便。本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值。

    正則表達(dá)式是一個(gè)特殊的字符序列,用于簡潔表達(dá)一組字符串特征,檢查一個(gè)字符串是否與某種模式匹配,使用起來十分方便。

    在Python中,我們通過調(diào)用re庫來使用re模塊:

    import re

    下面介紹Python常用的正則表達(dá)式處理函數(shù)。

    re.match函數(shù)

    re.match 函數(shù)從字符串的起始位置匹配正則表達(dá)式,返回match對象,如果不是起始位置匹配成功的話,match()就返回None。

    re.match(pattern, string, flags=0)

    pattern:匹配的正則表達(dá)式。

    string:待匹配的字符串。

    flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。具體參數(shù)為:

    re.I:忽略大小寫。

    re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依賴于當(dāng)前環(huán)境。

    re.M:多行模式。

    re.S:即 . ,并且包括換行符在內(nèi)的任意字符(. 不包括換行符)。

    re.U:表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依賴于 Unicode 字符屬性數(shù)據(jù)庫。

    re.X:為了增加可讀性,忽略空格和 # 后面的注釋。

    import?re
    #從起始位置匹配
    r1=re.match('abc','abcdefghi')
    print(r1)
    #不從起始位置匹配
    r2=re.match('def','abcdefghi')
    print(r2)

    運(yùn)行結(jié)果:

    其中,span表示匹配成功的整個(gè)子串的索引。

    使用group(num) 或 groups() 匹配對象函數(shù)來獲取匹配表達(dá)式。

    group(num):匹配的整個(gè)表達(dá)式的字符串,group() 可以一次輸入多個(gè)組號,這時(shí)它將返回一個(gè)包含那些組所對應(yīng)值的元組。

    groups():返回一個(gè)包含所有小組字符串的元組,從 1 到 所含的小組號。

    import?re
    
    s='This?is?a?demo'
    r1=re.match(r'(.*)?is?(.*)',s)
    r2=re.match(r'(.*)?is?(.*?)',s)
    
    print(r1.group())
    print(r1.group(1))
    print(r1.group(2))
    print(r1.groups())
    print()
    print(r2.group())
    print(r2.group(1))
    print(r2.group(2))
    print(r2.groups())

    運(yùn)行結(jié)果:

    上述代碼中的(.*)和(.*?)表示正則表達(dá)式的貪婪匹配與非貪婪匹配。

    re.search函數(shù)

    re.search函數(shù)掃描整個(gè)字符串并返回第一個(gè)成功的匹配,如果匹配成功則返回match對象,否則返回None。

    re.search(pattern, string, flags=0)

    pattern:匹配的正則表達(dá)式。

    string:待匹配的字符串。

    flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。

    import?re
    #從起始位置匹配
    r1=re.search('abc','abcdefghi')
    print(r1)
    #不從起始位置匹配
    r2=re.search('def','abcdefghi')
    print(r2)

    運(yùn)行結(jié)果:

    使用group(num) 或 groups() 匹配對象函數(shù)來獲取匹配表達(dá)式。

    group(num=0):匹配的整個(gè)表達(dá)式的字符串,group() 可以一次輸入多個(gè)組號,這時(shí)它將返回一個(gè)包含那些組所對應(yīng)值的元組。

    groups():返回一個(gè)包含所有小組字符串的元組,從 1 到 所含的小組號。

    import?re
    
    s='This?is?a?demo'
    r1=re.search(r'(.*)?is?(.*)',s)
    r2=re.search(r'(.*)?is?(.*?)',s)
    
    print(r1.group())
    print(r1.group(1))
    print(r1.group(2))
    print(r1.groups())
    print()
    print(r2.group())
    print(r2.group(1))
    print(r2.group(2))
    print(r2.groups())

    運(yùn)行結(jié)果:

    從上面不難發(fā)現(xiàn)re.match與re.search的區(qū)別:re.match只匹配字符串的起始位置,只要起始位置不符合正則表達(dá)式就匹配失敗,而re.search是匹配整個(gè)字符串,直到找到一個(gè)匹配為止。

    re.compile 函數(shù)

    compile 函數(shù)用于編譯正則表達(dá)式,生成一個(gè)正則表達(dá)式對象,供 match() 和 search() 這兩個(gè)函數(shù)使用。

    re.compile(pattern[, flags])

    pattern:一個(gè)字符串形式的正則表達(dá)式。

    flags:可選,表示匹配模式,比如忽略大小寫,多行模式等。

    import?re
    #匹配數(shù)字
    r=re.compile(r'\d+')?
    r1=r.match('This?is?a?demo')
    r2=r.match('This?is?111?and?That?is?222',0,27)
    r3=r.match('This?is?111?and?That?is?222',8,27)
    ?
    print(r1)
    print(r2)
    print(r3)

    運(yùn)行結(jié)果:

    findall函數(shù)

    搜索字符串,以列表形式返回正則表達(dá)式匹配的所有子串,如果沒有找到匹配的,則返回空列表。

    需要注意的是,match 和 search 是匹配一次,而findall 匹配所有。

    findall(string[, pos[, endpos]])

    string:待匹配的字符串。

    pos:可選參數(shù),指定字符串的起始位置,默認(rèn)為0。

    endpos:可選參數(shù),指定字符串的結(jié)束位置,默認(rèn)為字符串的長度。

    import?re
    #匹配數(shù)字
    r=re.compile(r'\d+')?
    r1=r.findall('This?is?a?demo')
    r2=r.findall('This?is?111?and?That?is?222',0,11)
    r3=r.findall('This?is?111?and?That?is?222',0,27)
    ?
    print(r1)
    print(r2)
    print(r3)

    運(yùn)行結(jié)果:

    re.finditer函數(shù)

    和 findall 類似,在字符串中找到正則表達(dá)式所匹配的所有子串,并把它們作為一個(gè)迭代器返回。

    re.finditer(pattern, string, flags=0)

    pattern:匹配的正則表達(dá)式。

    string:待匹配的字符串。

    flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如是否區(qū)分大小寫,多行匹配等。

    import?re?
    
    r=re.finditer(r'\d+','This?is?111?and?That?is?222')
    for?i?in?r:?
    ?print?(i.group())

    運(yùn)行結(jié)果:

    re.split函數(shù)

    將一個(gè)字符串按照正則表達(dá)式匹配的子串進(jìn)行分割后,以列表形式返回。

    re.split(pattern, string[, maxsplit=0, flags=0])

    pattern:匹配的正則表達(dá)式。

    string:待匹配的字符串。

    maxsplit:分割次數(shù),maxsplit=1分割一次,默認(rèn)為0,不限次數(shù)。

    flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等。

    import?re?
    
    r1=re.split('\W+','This?is?111?and?That?is?222')?
    r2=re.split('\W+','This?is?111?and?That?is?222',maxsplit=1)?
    r3=re.split('\d+','This?is?111?and?That?is?222')?
    r4=re.split('\d+','This?is?111?and?That?is?222',maxsplit=1)?
    print(r1)
    print(r2)
    print(r3)
    print(r4)

    運(yùn)行結(jié)果:

    re.sub函數(shù)

    re.sub函數(shù)用于替換字符串中的匹配項(xiàng)。

    re.sub(pattern, repl, string, count=0, flags=0)

    pattern:正則中的模式字符串。

    repl:替換的字符串,也可為一個(gè)函數(shù)。

    string:要被查找替換的原始字符串。

    count:模式匹配后替換的最大次數(shù),默認(rèn)0表示替換所有的匹配。

    import?re?
    
    r='This?is?111?and?That?is?222'
    #?刪除字符串中的數(shù)字
    r1=re.sub(r'\d+','',r)
    print(r1)
    #?刪除非數(shù)字的字符串?
    r2=re.sub(r'\D','',r)
    print(r2)

    運(yùn)行結(jié)果:

    到此這篇關(guān)于Python常用的正則表達(dá)式處理函數(shù)詳解的文章就介紹到這了,希望大家以后多多支持好二三四!

    文檔

    Python常用的正則表達(dá)式處理函數(shù)詳解

    這篇文章主要介紹了Python常用的正則表達(dá)式處理函數(shù),正則表達(dá)式是一個(gè)特殊的字符序列,用于簡潔表達(dá)一組字符串特征,檢查一個(gè)字符串是否與某種模式匹配,使用起來十分方便。本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關(guān)推薦
    一文秒懂python正則表達(dá)式常用函數(shù) python正則表達(dá)式語法學(xué)習(xí)筆記 帶動(dòng)物的詩句 如何關(guān)閉360畫報(bào) 叮咚怎么搶菜 網(wǎng)易云一起聽怎么添加歌 adobe creative cloud是什么軟件 24歲是什么年華 季度怎么劃分 什么是防范區(qū) 大怨種是個(gè)啥 七月初七有哪些風(fēng)俗 參照密接是什么意思 媚宅是什么 詠雪的詩句 傳統(tǒng)節(jié)日的詩句 描寫植物的詩句 描寫山的詩句有哪些 梅蘭竹菊的詩句 與蓮有關(guān)的詩句 JS截取字符串的三種方法詳解 PHP遍歷數(shù)組的6種方式總結(jié) php兩種基本的輸出方及實(shí)例詳解 php生成唯一uid的解決方法詳解 PHP7中對十六進(jìn)制字符串處理的問題詳解 PHP對接抖音開發(fā)平臺接口的詳細(xì)教程 php7安裝mysqli實(shí)例講解 php去掉一維數(shù)組的鍵值的實(shí)例方法 PHP中empty()和isset()的區(qū)別介紹 PHP實(shí)現(xiàn)JWT的Token登錄認(rèn)證 php判斷時(shí)間戳是否為今天實(shí)例講解 PHP7 preg_replace出錯(cuò)及解決辦法 關(guān)于杏花的詩句 帶飛的詩句 形容女人漂亮的詩句 春花的詩句 描寫初春的詩句 描寫燕子的詩句 帶有春字的詩句 春游的詩句
    Top 午夜亚洲av永久无码精品| 2019国产精品青青草原| 久久久久国产精品免费免费搜索 | 在线精品亚洲一区二区小说| 亚洲精品乱码久久久久蜜桃| 亚洲av日韩av天堂影片精品| 亚欧无码精品无码有性视频| 99热在线精品免费全部my| 亚洲国产精品VA在线看黑人| 黑猫福利精品第一视频| 97精品一区二区视频在线观看| 99re热视频这里只精品| 国产福利精品视频| 国内精品-bt天堂| 久久精品*5在热| 国产网红主播无码精品| 国产精品先锋资源站先锋影院 | 久久精品成人免费国产片小草 | 亚洲午夜精品久久久久久app| 色一乱一伦一图一区二区精品| 国产精品一区二区三区99| 国产精品毛片AV久久66| 91午夜精品亚洲一区二区三区 | 99re6这里有精品热视频在线| 9丨精品国产高清自在线看| 青春草无码精品视频在线观| 久久久精品天堂无码中文字幕 | 久久丫精品国产亚洲av不卡| 亚洲精品少妇30p| 久久精品国产亚洲Aⅴ香蕉| 免费精品国产自产拍观看 | 精品女同一区二区三区在线| 人妻少妇偷人精品视频| 亚洲日韩国产精品乱-久| 精品无码国产污污污免费网站| 亚洲精品国产美女久久久| 久久久久这里只有精品 | 国产精品成人观看视频免费| 久久久久人妻精品一区二区三区| 久久免费精品视频| 亚洲精品你懂的在线观看|