python中re模組與正規表示式的介紹(附程式碼)

不言
發布: 2019-02-20 14:27:32
轉載
2439 人瀏覽過

這篇文章帶給大家的內容是關於python中re模組與正規表示式的介紹(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

正規表示式(英文:Regular Expression,在程式碼中常簡稱為regex、regexp或RE),又稱正規表示式、正規表示法、正規表達式、規則表達式、常規表示法,是計算機科學的一個概念。正規表示式使用單一字串來描述、匹配一系列符合某個句法規則的字串。在許多文字編輯器裡,正規表示式通常被用來檢索、取代那些符合某個模式的文字。

正規表示式規則,單字元符合

字元 功能 正規表示式範例 符合符合範例
. 比符合任一個字元(除了n) b.b bab,b2b
[ ] 符合來自[]中字元集的任一個字元 i [abCde]m i am
\d 符合任何十進位數字,與[0-9]一致 w\dcschool #w3cschool
\D 符合非數字,即不是數字 mou\Dh mouth
#\s 符合任何空格字符,與[\n\t\r\v\f]相同 i\slike i like
\S 符合任何非空白字符,與\s相反 n\Se noe,n3e
\w 匹配任何字母數字字符,與[A-Za-z0-9_]相同 [A-Za-z]w
\W 符合非單字字元 [0-9]\W[A-Z] 3 A

表示數量符合

##功能正規表示式範例符合符合的範例##*符合前一個字元出現1次或無限次,即至少有一次a
字元
#符合0次或多次前面出現的正規表示式,即可有可無 a* #aaa
##aaa
? 符合前一個字元出現1次或0次,要嘛有一次,要嘛沒有 a? a或者b
{m} #前一個字元出現m次 [0-9]{5 } 12345
#{m.} 符合前一個字元至少出現m次 a{5.} aaaaa
#{m,n} 匹配前一個字元出現從m到n次 a{2,6} aaa

表示邊界匹配

# #B符合非單字邊界.*\Bver\
字元 功能 #正規表示式範例
^ 符合字串起始部分 ^Dear
#$ 符合字串終止部分 fi$
b 符合任何單字的邊界 \bThe\b
符合分組

字元功能\(ab)\num(?P< ;name>)#(?P=name)re模組

##已匹配左右任一個表達式
#將括號中字元作為一個分組
引用分組num符合的字串
分組起別名
#引用別名為name分組匹配到的字串

在python中,可以使用內建的re模組來使用正規表示式

re模組常見的函數與方法

#核心函數compile(pattern,flags=0)
說明
使用任何可選的標記來編譯正規表示式的模式,然後傳回一個正規表示式物件
re模組函數與正規表示式物件方法 說明
#match(pattern, string,flags=0) 嘗試使用帶有可選的標記的正規表示式的模式來匹配字串。如果符合成功,就傳回符合物件; 如果失敗,就傳回None
search(pattern,string,flags=0) 使用可選標記搜尋字串中第一次出現的正規表示式模式。如果符合成功,則傳回符合物件; 如果失敗,則傳回None
findall(pattern,string,[,flags]) 尋找字串中所有出現的正規表示式,並傳回一個列表
split(pattern,string,max=0) 根據正規表示式的模式分隔符,spilt函數將字符串分割為列表,然後返回成功匹配的列表,分割最多操作max次(預設分割所有匹配成功的位置)
#sub(pattern,repl,string,count=0) 使用repl替換所有正規表示式的模式在字串中出現的位置,除非定義count,否則就將替換所有出現的位置
常用的符合物件方法 說明
group(num=0)

預設傳回整個符合物件或傳回編號為num的特定子群組傳回一個包含所有符合子群組的元群組,如果沒有成功匹配,返回一個空元組#常用的模組屬性,大多數用於對正規表示式函數的修飾說明re .I使匹配對大小寫不敏感(忽略大小寫)#re.S.(點號)匹配除了n之外的所有字符,re.S標記表示.(點號)能夠匹配全部字符
groups(default=None)
span()

#re.M

    #多行匹配,影響^和$
  1. re.U

  2. 根據Unicode字元集解析字元。影響\w,\W,\b和\B
  3. re.X該標誌透過給予你更靈活的格式以便你講正規表示式寫得更易於理解

  4. re模組一般的使用方法

    #使用
  5. compile()
函數將正規表示式的字串形式編譯為一個正規表示式物件;

透過正規表示式物件提供的一系列方法(如:match()

)對文字進行匹配查找,獲得匹配結果,一個

Match物件;
最後使用

Match

物件提供的屬性和方法(例如:

group ()

)獲得信息,根據需要進行其他的操作。 re模組使用範例
匯入模組

#

import re
登入後複製
compile()函數compile 函數用來編譯正規表示式,產生一個Pattern 對象,它的一般使用形式如下:
import re

# 将正则表达式编译成pattern对象
pattern = re.compile(r'\d+')
登入後複製

編譯成正規表示式物件後,就可以使用上面所說的正則表達式物件方法了。

###match()###方法######match 方法用於尋找字串的頭部(也可以指定起始位置),它是###一次###匹配,只要找到了一個匹配的結果就返回,而不是查找所有匹配的結果。它的一般使用形式如下:###
match(string[, pos[, endpos]])
登入後複製
###其中,string是待匹配的字串,pos 和endpos 是可選參數,指定字串的###起始###和###終點# ##位置,預設值分別是0 和###len### (字串長度)。因此,當你不指定 pos 和 endpos 時,match 方法預設符合字串的頭部。 ######當匹配成功時,傳回一個 Match 對象,如果沒有匹配上,則傳回 None。 ###
>>> import re
>>> 
>>> pattern = re.compile(r'\d+') # 正则表达式表示匹配至少一个数字
>>> 
>>> m = pattern.match("one2three4") # match默认从开头开始匹配,开头是字母o,所以没有匹配成功
>>> print(m) # 匹配失败返回None
None
>>> 
>>> m = pattern.match("1two3four") # 开头字符是数字,匹配成功
>>> print(m)
<_sre.SRE_Match object; span=(0, 1), match=&#39;1&#39;>
>>> 
>>> m.group() # group()方法获取匹配成功的字符
'1'
>>> m = pattern.match("onetwo3four56",6,12) # 指定match从数字3开始查找,第一个是数字3,匹配成功
>>> print(m)
<_sre.SRE_Match object; span=(6, 7), match=&#39;3&#39;>
>>> m.group()
'3'
登入後複製
######

以上是python中re模組與正規表示式的介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板