正規表示式中group和groups的區別

2021-08-22 09:54:22 字數 1459 閱讀 6880

第一點,搞清楚它們用在什麼地方?

正規表示式中,group()用來提取分組截獲的字串,()用來分組。

組是通過 "(" 和 ")" 元字元來標識的。 "(" 和 ")" 有很多在數學表示式中相同的意思;它們一起把在它們裡面的表示式組成一組。舉個例子,你可以用重複限制符,象 *, +, ?, 和 ,來重複組裡的內容,比如說(ab)* 將匹配零或更多個重複的 "ab"。

如果不引入括號,整個個表示式作為乙個組,是group(0)(特別要注意這個,屬於易混點)

第二點 談區別

group和groups是兩個不同的函式。

一般,m.group(n) 返回第n組括號匹配的字元。

而m.group() == m.group(0) == 所有匹配的字元,與括號無關,這個是api規定的。

m.groups() 返回所有括號匹配的字元,以tuple格式(元組格式),不包括m.group(0),即整個表示式。

m.groups() == (m.group(0), m.group(1), ...)

第三點 例項說明

例一:未加括號時,預設分組為整個表示式

>>> import re

>>> p=re.compile('\d-\d-\d')

>>> m=p.match('2-3-1')

>>> m.groups()

>>> m.group()

'2-3-1'

>>> m.group(0)

'2-3-1'

>>> m.group(1)

traceback (most recent call last):

file "", line 1, in 

indexerror: no such group

例二: 分組之後的情形

>>> p=re.compile('(\d)-(\d)-(\d)')

>>> m.groups()

>>> m=p.match('2-3-1')

>>> m.groups()

('2', '3', '1')

>>> m.group()

'2-3-1'

>>> m.group(0)

'2-3-1'

>>> m.group(1)

'2'>>> m.group(2)

'3'>>> m.group(3)

'1'>>> m.group(4)

traceback (most recent call last):

file "", line 1, in 

indexerror: no such group

>>> m.groups()

('2', '3', '1')

注意:m.groups()不包含自身的表示式。

python正規表示式中group

用於匹配括號內的任何正規表示式,並且指明組的開始和結束位置 可以在執行匹配之後檢索組中的內容,並且可以在可以在字串中使用 number來進行進一步的匹配,如下所述。當需要匹配字元 或者 時,可以使用 和 或者 和 來實現。以上便是python3.6官方文件對於 表示式的解說,該括號表示式用於定義乙個...

正規表示式find和group詳解

正規表示式是乙個很好的東西,要使用好得好好研究。最近對find和group方法比較模糊。經研究記錄下筆記。呼叫group 方法前,都前要用find方法。否則報錯。其實看matcher類可以看到其中有乙個int groups 其實這個陣列就是儲存group匹配的資料。首先要知道乙個正規表示式之後有幾組...

python正規表示式中的分組 group

組是通過 和 元字元來標識的。和 有很多在數學表示式中相同的意思 它們一起把在它們裡面的表示式組成一組。舉個例子,你可以用重複限制符,象 和 來重複組裡的內容,比如說 ab 將匹配零或更多個重複的 ab 例子 如果不引入括號,增個表示式作為乙個組,是group 0 import re p re.co...