Python中正規表示式

2021-10-09 20:25:09 字數 2805 閱讀 3619

python re模組正規表示式中常用的字元有兩類:普通字元和11個元字元,元字元表示特定的功能,比如下面的(),被括起來的表示式將作為分組,從表示式左邊開始每遇到乙個分組的左括號「(」,編號+1。分組表示式作為乙個整體,可以後接數量詞。表示式中的 | 僅在該組中有效。那麼我們想匹配表示式中的 () 字元怎麼辦呢?通過字首反斜槓 \ 將特殊字元(元字元)轉義成普通字元。 注:在python的string前面加上『r』,即告訴編譯器不要轉義 \, 例如,\n 在raw string中,是兩個字元\和n,而不會轉義為換行符,但加上『r』後\n就直接匹配換行符了。

re.match 嘗試從字串的起始位置匹配乙個模式,匹配成功re.match方法返回乙個匹配的物件,否則返回none。如果不是起始位置匹配成功的話,match()也返回none。

函式語法:re.match(pattern, string, flags=0)

函式引數說明:

引數說明

pattern

匹配的正規表示式

string

要匹配的字串

flags

標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等。

我們可以使用group(num) 或 groups() 匹配物件函式來獲取匹配表示式。

import re

string =

'ab+ba-a+b'

print

(re.match(

'[a-z]*\+[a-z]*'

, string)

)

可以看出返回的並不是乙個字串,而是乙個返回乙個 matchobject,你可以查詢 matchobject 關於匹配字串的相關資訊了。matchobject 例項常見的方法有:group() 返回被 re 匹配的字串,start() 返回匹配開始的位置,end() 返回匹配結束的位置,span() 返回乙個元組包含匹配 (開始,結束) 的位置。

# group(0)是返回整個匹配項

import re

ans = re.match(r"(..)+"

,"a1b2c3"

)print

(ans.group(0)

)# a1b2c3

# group(num)返回捕獲組的內容,預設只有乙個捕獲組,並且每次捕獲都存在1號捕獲組。

import re

ans = re.match(r"(..)+"

,"a1b2c3"

)print

(ans.group(1)

)# c3

如何設定多個捕獲組呢?使用多個括號()!

注意:(…)+只有1個group(1)的捕獲組,每次捕獲都存在1號捕獲組。

# groups()返回所有捕獲組

import re

ans = re.match(r"(..)..(..)"

,"a1b2c3"

)print

(ans.groups())

# ('a1', 'c3')

print

(ans.group(2)

)# c3

注意:re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函式返回none;而re.search匹配整個字串,直到找到乙個匹配。

在字串中找到正規表示式所匹配的所有子串,並返回乙個列表,如果沒有找到匹配的,則返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有,另外,re.findall返回的是乙個列表。

語法格式為:re.findall(pattern, string, flags=0)

函式引數說明:

引數說明

pattern

匹配的正規表示式

string

待匹配的字串

import re

ans = re.

compile

(r'\d+'

)print

(ans.findall(

'o1n2m3k4'))

# ['1', '2', '3', '4']

ans2 = re.findall(r'\d+'

,'o1n2m3k4'

)print

(ans2)

# ['1', '2', '3', '4']

re.finditer 和 findall 類似,在字串中找到正規表示式所匹配的所有子串,並把它們作為乙個迭代器返回。

語法:re.finditer(pattern, string, flags=0)

函式引數說明:

引數描述

pattern

匹配的正規表示式

string

要匹配的字串

flags

標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等

python中正規表示式

python中正規表示式語法與linux中的相容 檢視正規表示式 python提供re模組,包含所有正規表示式的功能。由於python的字串本身也用 轉義,所以要特別注意 s abc 001 python的字串 對應的正規表示式字串變成 abc 001 建議使用python的r字首,就不用考慮轉義的...

Python 中 正規表示式

一 最近要對字串執行很多操作,所以學了正規表示式 不得不說正規表示式對字串的操作還是很給力的 runoob上面的教程 python中的正規表示式 正規表示式教程 python中要使用正規表示式,首先要匯入re模組 import re 二 常用函式 或者說方法 re.match 作用 嘗試從字串的起始...

python中正規表示式使用

1 正規表示式的常用操作符 操作符說明例項 表示任何單個字元 字符集,對單個字元給出取值範圍 abc 表示a b c,a z 表示a到z單個字元 非字符集,對單個字元給出排除範圍 abc 表示非a或b或c的單個字元 前乙個字元0次或無限次擴充套件 abc 表示ab abc abcc abccc等 前...