<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>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    一文秒懂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&nbsp;垃圾回收機制詳解 Python實現城市公交網絡分析與可視化 Python數據分析處理(三)--運動員信息的分組與聚合 基于Python實現PDF區域文本提取工具 詳解python的循環 python實現新年倒計時實例代碼 Python實現消消樂小游戲 學習python的while循環嵌套 提升Python運行速度的5個小技巧 Python按鍵或值對字典進行排序 圖像檢索之基于vlfeat實現SIFT特征 python繪圖中的四個繪圖技巧 js中toString方法3個作用 信息系統項目管理師報考條件 信息系統項目管理師報考時間 信息系統項目管理師報名時間 信息系統項目管理師考試時間 pmp與信息系統項目管理師 信息系統項目管理師報考要求 Python常用的正則表達式處理函數詳解 JS截取字符串的三種方法詳解 PHP遍歷數組的6種方式總結 php兩種基本的輸出方及實例詳解 php生成唯一uid的解決方法詳解 PHP7中對十六進制字符串處理的問題詳解 PHP對接抖音開發平臺接口的詳細教程 php7安裝mysqli實例講解 php去掉一維數組的鍵值的實例方法 PHP中empty()和isset()的區別介紹 PHP實現JWT的Token登錄認證 php判斷時間戳是否為今天實例講解 PHP7 preg_replace出錯及解決辦法 五年班的學習計劃怎么寫 五年級的學習計劃 初中新學期學習計劃怎么寫 關于英語的學習計劃怎么寫 怎么寫暑假學習計劃書 4年級數學學習計劃怎么寫 后半學期的學習計劃怎么寫 上學期學習計劃怎么寫
    Top 中文精品字幕电影在线播放视频| 亚洲av永久无码精品秋霞电影秋| 九九久久精品国产AV片国产| 精品福利一区二区三区免费视频 | 亚洲欧洲精品成人久久奇米网| 亚洲精品国产精品国自产网站| 日韩精品成人一区二区三区| 国产成人亚洲精品影院| 精品国产一区二区三区www| 91国内揄拍国内精品对白不卡| 国产精品亚洲精品日韩已满| 色哟哟国产精品免费观看| 精品久久免费视频| 国产精品亚洲一区二区麻豆| 91精品国产色综合久久不卡蜜 | 精品深夜AV无码一区二区| 亚洲精品乱码久久久久久自慰| 伊人精品视频在线| 国外AV无码精品国产精品| 久久福利资源国产精品999| 51视频精品全部免费最新| 亚洲av永久无码精品秋霞电影影院| 久久精品视频91| 亚洲午夜成人精品电影在线观看| 国产精品情侣自拍| 国产精品特级露脸AV毛片| 国产69精品久久久久久久| 亚洲日韩一区精品射精| 玩弄人妻少妇精品视频| 国产精品免费精品自在线观看| 3d动漫精品啪啪一区二区免费| 青草国产精品久久久久久 | 国产成人精品综合网站| 1024你懂的国产精品| 亚洲精品美女久久久久| 91精品久久久久久久久中文字幕| 久久久久亚洲精品天堂| 亚洲精品第五页中文字幕| 国产精品久久久久…| 国产精品久久久久无码av| 97精品国产一区二区三区|