<sup id="m40ya"></sup>
  • 
    
  • <kbd id="m40ya"></kbd>
    <samp id="m40ya"></samp>
    <ul id="m40ya"></ul>
  • 更多精彩內(nèi)容,歡迎關(guān)注:

    視頻號(hào)
    視頻號(hào)

    抖音
    抖音

    快手
    快手

    微博
    微博

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

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

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

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

    import re

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

    re.match函數(shù)

    re.match 函數(shù)從字符串的起始位置匹配正則表達(dá)式,返回match對(duì)象,如果不是起始位置匹配成功的話,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ù)庫(kù)。

    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() 匹配對(duì)象函數(shù)來(lái)獲取匹配表達(dá)式。

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

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

    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對(duì)象,否則返回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() 匹配對(duì)象函數(shù)來(lái)獲取匹配表達(dá)式。

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

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

    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á)式對(duì)象,供 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)為字符串的長(zhǎng)度。

    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ù)詳解的文章就介紹到這了,希望大家以后多多支持好二三四!

    為你推薦
    資訊專欄
    熱門視頻
    相關(guān)推薦
    一文秒懂python正則表達(dá)式常用函數(shù) python正則表達(dá)式語(yǔ)法學(xué)習(xí)筆記 Python&nbsp;垃圾回收機(jī)制詳解 Python實(shí)現(xiàn)城市公交網(wǎng)絡(luò)分析與可視化 Python數(shù)據(jù)分析處理(三)--運(yùn)動(dòng)員信息的分組與聚合 基于Python實(shí)現(xiàn)PDF區(qū)域文本提取工具 詳解python的循環(huán) python實(shí)現(xiàn)新年倒計(jì)時(shí)實(shí)例代碼 Python實(shí)現(xiàn)消消樂小游戲 學(xué)習(xí)python的while循環(huán)嵌套 提升Python運(yùn)行速度的5個(gè)小技巧 Python按鍵或值對(duì)字典進(jìn)行排序 圖像檢索之基于vlfeat實(shí)現(xiàn)SIFT特征 python繪圖中的四個(gè)繪圖技巧 js中toString方法3個(gè)作用 信息系統(tǒng)項(xiàng)目管理師報(bào)考條件 信息系統(tǒng)項(xiàng)目管理師報(bào)考時(shí)間 信息系統(tǒng)項(xiàng)目管理師報(bào)名時(shí)間 信息系統(tǒng)項(xiàng)目管理師考試時(shí)間 pmp與信息系統(tǒng)項(xiàng)目管理師 JS截取字符串的三種方法詳解 PHP遍歷數(shù)組的6種方式總結(jié) php兩種基本的輸出方及實(shí)例詳解 php生成唯一uid的解決方法詳解 PHP7中對(duì)十六進(jìn)制字符串處理的問題詳解 PHP對(duì)接抖音開發(fā)平臺(tái)接口的詳細(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ò)及解決辦法 五年班的學(xué)習(xí)計(jì)劃怎么寫 五年級(jí)的學(xué)習(xí)計(jì)劃 初中新學(xué)期學(xué)習(xí)計(jì)劃怎么寫 關(guān)于英語(yǔ)的學(xué)習(xí)計(jì)劃怎么寫 怎么寫暑假學(xué)習(xí)計(jì)劃書 4年級(jí)數(shù)學(xué)學(xué)習(xí)計(jì)劃怎么寫 后半學(xué)期的學(xué)習(xí)計(jì)劃怎么寫 上學(xué)期學(xué)習(xí)計(jì)劃怎么寫 五年級(jí)的學(xué)習(xí)計(jì)劃書怎么寫
    Top 久久精品噜噜噜成人av| 国内精品自在自线视频| 国内精品免费在线观看 | 国产成人综合久久精品| 精品无码一区二区三区爱欲九九| 国产伦精品一区二区免费| 337P日本欧洲亚洲大胆精品 | 精品国产黑色丝袜高跟鞋| 日韩成人国产精品视频| 国产精品久久久久9999高清| 久久国产精品免费看| 精品影片在线观看的网站| 99re热精品这里精品| 亚洲精品乱码久久久久久久久久久久 | 国产成人精品综合久久久久| 亚洲国产精品无码久久青草 | 国产玖玖玖九九精品视频| 国产精品亚洲а∨天堂2021 | 色婷婷99综合久久久精品| 国产精品蜜芽在线观看| 91精品福利视频| 久久综合国产乱子伦精品免费| 亚洲愉拍99热成人精品热久久| 久久精品国产第一区二区| 亚洲AV蜜桃永久无码精品| 国产亚洲精品成人久久网站| 国产自产拍精品视频免费看| 精品亚洲国产成人av| 亚洲国产成人综合精品| 国产69精品久久久久观看软件 | 熟女人妻少妇精品视频| 国产中文在线亚洲精品官网| 久久精品国产精品亚洲下载| 亚洲欧洲自拍拍偷精品 美利坚| 亚洲av无码成人精品区| 亚洲国产一成久久精品国产成人综合 | 国产午夜亚洲精品不卡电影| 羞羞色院91精品网站| 午夜精品久久久久久久99热| 免费人妻精品一区二区三区| 人妻老妇乱子伦精品无码专区|