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

來源:腳本之家  責任編輯:小易  

Python本不等于正則語言,它只是內部集成了一個正則引擎,這個引擎實現了正則語言的功能,在Python中,這個引擎就是re模塊。所以,你要先‘import re’。下面網頁詳細介紹了正則本身和re模塊,可供參考,基本上覆蓋了所有內容www.13333515.buzz防采集請勿采集本網。

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

import re s='就行,很常用。表示只匹配一次。

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

import re a='<div class=\"content\">' \\ '你大爺' \\ '</div>' x=re.findall('(.*)</div>',a) print x[0]

import re

Help on function match in module re: match(pattern,string,flags=0) Try to apply the pattern at the start of the string,returning a match object,or None if no match was found.Help on

正則表達式語法模式和操作符詳見:https://www.runoob.com/python/python-reg-expressions.html#flags

正則表達式一個比較常見的用途是找到所有模式匹配的字符串并用不同的字符串來替換它們。sub方法提供一個替換值,可以是字符串或函數,和一個要被處理的字符串。1、這里的sub方法,是被編譯成

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

常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然后對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫。

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 res='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())

運行結果:

上述代碼中的(.*)和(.*?)表示正則表達式的貪婪匹配與非貪婪匹配,詳情見此:http://www.13333515.buzz/article/31491.htm

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 res='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)

運行結果:

參考資料:

https://www.runoob.com/python/python-reg-expressions.html#flags

到此這篇關于Python常用的正則表達式處理函數詳解的文章就介紹到這了,更多相關python 正則表達式處理函數內容請搜索真格學網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持真格學網!

正則表達式并不是Python的一部分。正則表達式是用于處理字符串的強大工具,擁有自己獨特的語法以及一個獨立的處理引擎,效率上可能不如str自帶的方法,但功能十分強大。得益于這一點,在提供了正則表達式的語言里,正則表達式的語法都是一樣的,區別只在于不同的編程語言實現支持的語法數量不同;但不用擔心,不被支持的語法通常是不常用的部分。如果已經在其他語言里使用過正則表達式,只需要簡單看一看就可以上手了。下圖展示了使用正則表達式進行匹配的流程:正則表達式的大致匹配過程是:依次拿出表達式和文本中的字符比較,如果每一個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。如果表達式中有量詞或邊界,這個過程會稍微有一些不同,但也是很好理解的,看下圖中的示例以及自己多使用幾次就能明白內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • 一文秒懂python正則表達式常用函數
  • python編程快速上手——strip()函數的正則表達式實現方法分析
  • 關于python正則表達式 findall函數問題詳解
  • python使用正則表達式的search()函數實現指定位置搜索功能
  • python正則表達式re之compile函數解析
  • python正則表達式常用函數總結
  • python中正則表達式match()、search()函數及match()和search()的區別詳解
  • php與javascript正則匹配中文的方法分析
  • 正則應用之 日期正則表達式
  • 正則表達式詳述 二
  • 常用的正則表達式集錦
  • 正則表達式 應用四則
  • ubb代碼轉換為html
  • javascript正則表達式解析url的技巧
  • 如何刪除文本框里的文字內容中段落之間多余的分行
  • 比較實用的正則表達式學習筆記
  • 正則表達式概述 什么是正則表達式 .
  • python 正則表達式高手在否
  • python 正則表達式怎么匹配
  • python 正則表達式 ——————這段兒啥意思啊。。?在線等!
  • python里用正則表達式匹配一行數據
  • python 如何用正則表達式取網址?
  • 怎么樣用Python正則表達式提取中間內容?
  • python正則表達式函數match和search的區別詳解
  • python 正則表達式re.sub函數替換內容的一個比較基礎的問題
  • python怎樣用正則表達式匹配不包含某些字符的字符串?
  • python正則表達式怎么寫trpg的骰子?
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全javascriptasp.netphp編程ajax相關正則表達式asp編程jsp編程編程10000問css/htmlflex腳本加解密web2.0xml/rss網頁編輯器相關技巧安全相關網頁播放器其它綜合dart首頁正則表達式一文秒懂python正則表達式常用函數python編程快速上手——strip()函數的正則表達式實現方法分析關于python正則表達式 findall函數問題詳解python使用正則表達式的search()函數實現指定位置搜索功能python正則表達式re之compile函數解析python正則表達式常用函數總結python中正則表達式match()、search()函數及match()和search()的區別詳解php與javascript正則匹配中文的方法分析正則應用之 日期正則表達式正則表達式詳述 二常用的正則表達式集錦正則表達式 應用四則ubb代碼轉換為htmljavascript正則表達式解析url的技巧如何刪除文本框里的文字內容中段落之間多余的分行比較實用的正則表達式學習筆記正則表達式概述 什么是正則表達式 .java 正則表達式詳解比較正宗的驗證郵箱的正則表達式正則表達式匹配任意字符(包括換最新手機號碼、電話號碼正則表達javascript 手機號碼正則表達式驗js利用正則配合replace替換指定字正則表達式匹配不包含某些字符串正則中需要轉義的特殊字符小結js正則函數match、exec、test、s最全的常用正則表達式大全——包vbs中的正則表達式的用法大全除捕獲組的語法外,其它的(?...)語法都不php正則表達式完全教程之基礎篇jscript中正則表達函數的說明與應用正則表達式之回溯javascript將字符串中的多個空格替換為一c# 正則表達式 使用介紹正則表達式的應用js正則表達式必須包含數字、字母、特殊字半小時精通正則表達式-精華版
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果