<address id="zhpbl"></address>
<noframes id="zhpbl">
<address id="zhpbl"><form id="zhpbl"><th id="zhpbl"></th></form></address>

    <em id="zhpbl"></em>

      <address id="zhpbl"><th id="zhpbl"><progress id="zhpbl"></progress></th></address>
      更多精彩內容,歡迎關注:

      視頻號
      視頻號

      抖音
      抖音

      快手
      快手

      微博
      微博

      Python常用的正則表達式處理函數詳解

      導讀這篇文章主要介紹了Python常用的正則表達式處理函數,正則表達式是一個特殊的字符序列,用于簡潔表達一組字符串特征,檢查一個字符串是否與某種模式匹配,使用起來十分方便。本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值。

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

      在Python中,我們通過調用re庫來使用re模塊:

      import re

      下面介紹Python常用的正則表達式處理函數。

      re.match函數

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

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

      pattern:匹配的正則表達式。

      string:待匹配的字符串。

      flags:標志位,用于控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。具體參數為:

      re.I:忽略大小寫。

      re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依賴于當前環境。

      re.M:多行模式。

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

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

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

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

      運行結果:

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

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

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

      groups():返回一個包含所有小組字符串的元組,從 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())

      運行結果:

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

      re.search函數

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

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

      pattern:匹配的正則表達式。

      string:待匹配的字符串。

      flags:標志位,用于控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。

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

      運行結果:

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

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

      groups():返回一個包含所有小組字符串的元組,從 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())

      運行結果:

      從上面不難發現re.match與re.search的區別:re.match只匹配字符串的起始位置,只要起始位置不符合正則表達式就匹配失敗,而re.search是匹配整個字符串,直到找到一個匹配為止。

      re.compile 函數

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

      re.compile(pattern[, flags])

      pattern:一個字符串形式的正則表達式。

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

      import?re
      #匹配數字
      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)

      運行結果:

      findall函數

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

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

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

      string:待匹配的字符串。

      pos:可選參數,指定字符串的起始位置,默認為0。

      endpos:可選參數,指定字符串的結束位置,默認為字符串的長度。

      import?re
      #匹配數字
      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)

      運行結果:

      re.finditer函數

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

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

      pattern:匹配的正則表達式。

      string:待匹配的字符串。

      flags:標志位,用于控制正則表達式的匹配方式,如是否區分大小寫,多行匹配等。

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

      運行結果:

      re.split函數

      將一個字符串按照正則表達式匹配的子串進行分割后,以列表形式返回。

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

      pattern:匹配的正則表達式。

      string:待匹配的字符串。

      maxsplit:分割次數,maxsplit=1分割一次,默認為0,不限次數。

      flags:標志位,用于控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等。

      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)

      運行結果:

      re.sub函數

      re.sub函數用于替換字符串中的匹配項。

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

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

      repl:替換的字符串,也可為一個函數。

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

      count:模式匹配后替換的最大次數,默認0表示替換所有的匹配。

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

      運行結果:

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

      為你推薦
      資訊專欄
      熱門視頻
      相關推薦
      一文秒懂python正則表達式常用函數 python正則表達式語法學習筆記 Python&nbsp;垃圾回收機制詳解 Python實現城市公交網絡分析與可視化 Python數據分析處理(三)--運動員信息的分組與聚合 基于Python實現PDF區域文本提取工具 詳解python的循環 python實現新年倒計時實例代碼 Python實現消消樂小游戲 學習python的while循環嵌套 提升Python運行速度的5個小技巧 Python按鍵或值對字典進行排序 圖像檢索之基于vlfeat實現SIFT特征 python繪圖中的四個繪圖技巧 js中toString方法3個作用 信息系統項目管理師報考條件 信息系統項目管理師報考時間 信息系統項目管理師報名時間 信息系統項目管理師考試時間 pmp與信息系統項目管理師 JS截取字符串的三種方法詳解 PHP遍歷數組的6種方式總結 php兩種基本的輸出方及實例詳解 php生成唯一uid的解決方法詳解 PHP7中對十六進制字符串處理的問題詳解 PHP對接抖音開發平臺接口的詳細教程 php7安裝mysqli實例講解 php去掉一維數組的鍵值的實例方法 PHP中empty()和isset()的區別介紹 PHP實現JWT的Token登錄認證 php判斷時間戳是否為今天實例講解 PHP7 preg_replace出錯及解決辦法 五年班的學習計劃怎么寫 五年級的學習計劃 初中新學期學習計劃怎么寫 關于英語的學習計劃怎么寫 怎么寫暑假學習計劃書 4年級數學學習計劃怎么寫 后半學期的學習計劃怎么寫 上學期學習計劃怎么寫 五年級的學習計劃書怎么寫
      Top 少妇高潮太爽了在线视频