<sup id="m40ya"></sup>
  • 
    
  • <kbd id="m40ya"></kbd>
    <samp id="m40ya"></samp>
    <ul id="m40ya"></ul>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    一文秒懂python正則表達式常用函數

    文檔

    一文秒懂python正則表達式常用函數

    這篇文章主要介紹了python正則表達式常用函數及使用方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值。
    推薦度:
    導讀這篇文章主要介紹了python正則表達式常用函數及使用方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值。

    導讀: 正則表達式是處理字符串類型的"核武器",不僅速度快,而且功能強大。本文不過多展開正則表達式相關語法,僅簡要 介紹 python中正則表達式常用函數及其使用方 法,以作快速查詢瀏覽。

    01 Re概覽

    Re模塊是python的內置模塊,提供了正則表達式在python中的所有用法,默認安裝位置在python根目錄下的Lib文件夾(如 ..\Python\Python37\Lib)。主要提供了3大類字符串操作方法:

    字符查找/匹配

    字符替換

    字符分割

    由于是面向字符串類型的模塊,就不得不提到字符串編碼類型。re模塊中,模式串和搜索串既可以是 Unicode 字符串 (常用str類型) ,也可以是8位字節串 (bytes,2位16進制數字,例如\xe5) , 但要求二者必須是同類型字符串。

    02 字符串查找/匹配

    預編譯:compile

    在介紹查找和匹配函數前,首先需要知道re的compile函數,該函數可以將一個模式串編譯成正則表達式類型,以便后續快速匹配和復用

    import?re
    pattern?=?re.compile(r'[a-z]{2,5}')
    type(pattern)?#re.Pattern

    此例創建了一個正則表達式式對象 (re.pattern) ,命名為pattern,用于匹配2-5位小寫字母的模式串。后續在使用其他正則表達式函數時,即可使用pattern進行方法調用。

    匹配:match

    match函數用于從文本串的起始位置開始匹配,若匹配成功,則返回相應的匹配對象,此時可調用group()方法返回匹配結果,也可用span()方法返回匹配起止下標區間;否則返回None

    import?re
    pattern?=?re.compile(r'[a-z]{2,5}')
    text1?=?'this?is?a?re?test'
    res?=?pattern.match(text1)
    print(res)?#
    if?res:
    ?print(res.group())?#this
    ?print(res.span())?#(0,?4)
    text2?=?'是的,?this?is?a?re?test'
    print(pattern.match(text2))#None

    match函數還有一個變形函數fullmatch,當且僅當模式串與文本串剛好全部匹配時,返回一個匹配對象,否則返回None

    搜索:search

    match只提供了從文本串起始位置匹配的結果,如果想從任意位置匹配,則可調用search方法,與match方法類似,當任意位置匹配成功,則立即返回一個匹配對象,也可調用span()方法獲取起止區間、調用group方法獲得匹配文本串

    import?re
    pattern?=?re.compile(r'\s[a-z]{2}')
    text1?=?'this?is?a?re?test'
    res?=?pattern.search(text1)
    print(res)?#
    if?res:
    ?print(res.group())?#is
    ?print(res.span())?#(4,?7)
    pattern2?=?re.compile(r'\s[a-z]{5}')
    text2?=?'是的,this?is?a?re?test'
    print(pattern2.search(text2))#None

    match和search均用于匹配單個結果,唯一區別在于前者是從起始位置開始匹配,而后者從任意位置匹配,匹配成功則返回一個match對象。

    全搜索:findall/finditer

    幾乎是最常用的正則表達式函數,用于尋找所有匹配的結果,例如在爬蟲信息提取中,可非常方便地提取所有匹配字段

    import?re
    pattern?=?re.compile(r'\s[a-z]{2,5}')
    text1?=?'this?is?a?re?test'
    res?=?pattern.findall(text1)
    print(res)?#['?is',?'?re',?'?test']

    findall返回的是一個列表對象類型,當無匹配對象時,返回一個空列表。為了避免因同時返回大量匹配結果占用過多內存,可以調用finditer函數返回一個迭代器類型,其中每個迭代元素是一個match對象,可繼續調用group和span方法獲取相應結果

    import?re
    pattern?=?re.compile(r'\s[a-z]{2,5}')
    text1?=?'this?is?a?re?test'
    res?=?pattern.finditer(text1)
    for?r?in?res:
    ?print(r.group())
    """
    ?is
    ?re
    ?test
    """

    當匹配模式串較為簡單或者僅需單詞調用時,上述所有方法也可直接調用re類函數,而無需事先編譯。此時各方法的第一個參數為模式串。

    import?re
    pattern?=?re.compile(r'\d{2,5}')
    text?=?'this?is?re?test'
    re.findall('[a-z]+',?text)?#['this',?'is',?'re',?'test']
    03 字符串替換/分割

    替換:sub/subn

    當需要對文本串進行條件替換時,可調用re.sub實現 (當然也可先編譯后再用調用實例方法) ,相應參數分別為模式串、替換格式、文本串,還可以通過增加缺省參數限定替換次數和匹配模式。通過在模式串進行分組,可實現字符串的格式化替換(類似字符串的format方法),以實現特定任務。

    import?re
    text?=?'today?is?2020-03-05'
    print(re.sub('-',?'',?text))?#'today?is?20200305'
    print(re.sub('-',?'',?text,?1))?#'today?is?202003-05'
    print(re.sub('(\d{4})-(\d{2})-(\d{2})',?r'\2/\3/\1',?text))?#'today?is?03/05/2020'

    re.sub的一個變形方法是re.subn,區別是返回一個2元素的元組,其中第一個元素為替換結果,第二個為替換次數

    import?re
    text?=?'today?is?2020-03-05'
    print(re.subn('-',?'',?text))?#('today?is?20200305',?2)

    分割:split

    還可以調用正則表達式實現字符串的特定分割,相當于.split()方法的一個加強版,實現特定模式的分割,返回一個切割后的結果列表

    import?re
    text?=?'today?is?a?re?test,?what?do?you?mind?'
    print(re.split(',',?text))?#['today?is?a?re?test',?'?what?do?you?mind?']
    04 總結

    python中的re模塊提供了正則表達式的常用方法,每種方法都包括類方法調用(如re.match)或模式串的實例調用(pattern.match)2種形式

    常用的匹配函數:match/fullmatch

    常用的搜索函數:search/findall/finditer

    常用的替換函數:sub/subn

    常用的切割函數:split

    還有其他很多方法,但不是很常用,具體可參考官方文檔

    另外,python還有第三方正則表達式庫regex可供選擇

    到此這篇關于一文秒懂python正則表達式常用函數的文章就介紹到這了,希望大家以后多多支持好二三四!

    文檔

    一文秒懂python正則表達式常用函數

    這篇文章主要介紹了python正則表達式常用函數及使用方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關推薦
    python正則表達式語法學習筆記 帶動物的詩句 如何關閉360畫報 叮咚怎么搶菜 網易云一起聽怎么添加歌 adobe creative cloud是什么軟件 24歲是什么年華 季度怎么劃分 什么是防范區 大怨種是個啥 七月初七有哪些風俗 參照密接是什么意思 媚宅是什么 詠雪的詩句 傳統節日的詩句 描寫植物的詩句 描寫山的詩句有哪些 梅蘭竹菊的詩句 與蓮有關的詩句 贊美虎的詩句 Python常用的正則表達式處理函數詳解 JS截取字符串的三種方法詳解 PHP遍歷數組的6種方式總結 php兩種基本的輸出方及實例詳解 php生成唯一uid的解決方法詳解 PHP7中對十六進制字符串處理的問題詳解 PHP對接抖音開發平臺接口的詳細教程 php7安裝mysqli實例講解 php去掉一維數組的鍵值的實例方法 PHP中empty()和isset()的區別介紹 PHP實現JWT的Token登錄認證 php判斷時間戳是否為今天實例講解 PHP7 preg_replace出錯及解決辦法 關于杏花的詩句 帶飛的詩句 形容女人漂亮的詩句 春花的詩句 描寫初春的詩句 描寫燕子的詩句 帶有春字的詩句
    Top 国产69精品久久久久9999| 91精品久久久久久久久久| 国产日产欧产精品精品蜜芽| 久久精品视频99精品视频150| 国产伦精品一区二区三区精品| 久久精品国产四虎| 久久精品免视看国产陈冠希| 亚洲а∨天堂久久精品| 久久蜜桃精品一区二区三区| 精品偷自拍另类在线观看| 国产精品午睡沙发系列| 国产成人精品a视频一区| 国产精品白嫩在线观看| 精品一区二区ww| 精品少妇ay一区二区三区| 久久国产精品99久久小说| 69精品人人人人| 精品国产午夜福利在线观看 | 久久成人国产精品二三区| 国产精品hd免费观看| 国产在线91精品天天更新| 美利坚永久精品视频在线观看| 国产精品久久久久久久久免费| 久久久久久夜精品精品免费啦| 久久精品国产影库免费看| 亚洲午夜国产精品无码| 99re这里只有精品6| 久久久久无码国产精品不卡| 国产精品亚洲精品日韩已方| 国产2021久久精品| 精品国产一区二区22| 久久亚洲AV永久无码精品| 国产精品免费大片一区二区| 亚洲国产精品不卡毛片a在线| 日韩精品人成在线播放| 日韩亚洲精品福利| A级精品国产片在线观看| 国产精品综合专区中文字幕免费播放| 亚洲精品无码AV中文字幕电影网站| 日本精品少妇一区二区三区| 亚洲AV无码成人精品区大在线|