1 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
group和groups是兩個(gè)不同的函數(shù)。一般,m.group(N) 返回第N組括號(hào)匹配的字符。而m.group() == m.group(0) == 所有匹配的字符,與括號(hào)無關(guān),這個(gè)是API規(guī)定的。m.groups() 返回所有括號(hào)匹配的字符,以tuple格式。m.groups() == (m.group(0), m.group(1), ...)
正則表達(dá)式中,group()用來提取分組截獲的字符串,()用來分組。
組是通過 "(" 和 ")" 元字符來標(biāo)識(shí)的。 "(" 和 ")" 有很多在數(shù)學(xué)表達(dá)式中相同的意思;它們一起把在它們里面的表達(dá)式組成一組。舉個(gè)例子,你可以用重復(fù)限制符,象 *, +, ?, 和 {m,n},來重復(fù)組里的內(nèi)容,比如說(ab)* 將匹配零或更多個(gè)重復(fù)的 "ab"。
如果不引入括號(hào),整個(gè)個(gè)表達(dá)式作為一個(gè)組,是group(0)
對(duì)于題目中的例子:m = re.match("([abc])+", "abc")+號(hào)在括號(hào)外面。括號(hào)最多匹配到一個(gè)字符,要么是a, 要么是c,這個(gè)python引擎匹配的是末尾的c。而m.group() == m.group(0) 這個(gè)返回的是整個(gè)匹配的字符串"abc".
添加回答
舉報(bào)