亚洲精品国产精品乱码视色,下载应用成人电影AVapp,成人影院下载视频

      <track id="gfhue"><i id="gfhue"></i></track><input id="gfhue"></input>

      1. 更多精彩內(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中,我們通過(guò)調(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ū)分大小寫(xiě),多行匹配等等。具體參數(shù)為:

        re.I:忽略大小寫(xiě)。

        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ū)分大小寫(xiě),多行匹配等等。

        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:可選,表示匹配模式,比如忽略大小寫(xiě),多行模式等。

        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á)式匹配的所有子串,如果沒(méi)有找到匹配的,則返回空列表。

        需要注意的是,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ū)分大小寫(xiě),多行匹配等。

        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ū)分大小寫(xiě),多行匹配等。

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

        為你推薦
        資訊專欄
        熱門(mén)視頻
        相關(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)消消樂(lè)小游戲 學(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)制字符串處理的問(wèn)題詳解 PHP對(duì)接抖音開(kāi)發(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ì)劃怎么寫(xiě) 五年級(jí)的學(xué)習(xí)計(jì)劃 初中新學(xué)期學(xué)習(xí)計(jì)劃怎么寫(xiě) 關(guān)于英語(yǔ)的學(xué)習(xí)計(jì)劃怎么寫(xiě) 怎么寫(xiě)暑假學(xué)習(xí)計(jì)劃書(shū) 4年級(jí)數(shù)學(xué)學(xué)習(xí)計(jì)劃怎么寫(xiě) 后半學(xué)期的學(xué)習(xí)計(jì)劃怎么寫(xiě) 上學(xué)期學(xué)習(xí)計(jì)劃怎么寫(xiě) 五年級(jí)的學(xué)習(xí)計(jì)劃書(shū)怎么寫(xiě)
        Top