python RE match物件 m.group(0)可以輸出 m.group(1)為啥不可以輸出第二個呢?

dream_網路安全發表於2018-11-23

在這裡插入圖片描述

import re
match = re.search(r’[1-9]\d{5}’ ,‘BIT233189’)
if match:
… print(match.group(0))

233189

在這裡插入圖片描述

import re
m = re.search(r’[1-9]\d{5}’, ‘bvcdh345678 jiki876989’)
m.string
‘bvcdh345678 jiki876989’

m.re
re.compile(’[1-9]\d{5}’)

m.pos
0

m.endpos
22

在這裡插入圖片描述在這裡插入圖片描述
在這裡插入圖片描述

m.group(0)
‘345678’

m.start(0)
5

m.end(0)
11

m.span(0)
(5, 11)

在這裡插入圖片描述

m.group(0)可以輸出 m.group(1)為啥不可以輸出第二個呢?

在這裡插入圖片描述

group和groups是兩個不同的函式。一般,m.group(N) 返回第N組括號匹配的字元。而m.group() == m.group(0) == 所有匹配的字元,與括號無關,這個是API規定的。m.groups() 返回所有括號匹配的字元,以tuple格式。m.groups() == (m.group(0), m.group(1), …)
正規表示式中,group()用來提取分組截獲的字串,()用來分組。
組是通過 “(” 和 “)” 元字元來標識的。 “(” 和 “)” 有很多在數學表示式中相同的意思;它們一起把在它們裡面的表示式組成一組。舉個例子,你可以用重複限制符,象 , +, ?, 和 {m,n},來重複組裡的內容,比如說(ab) 將匹配零或更多個重複的 “ab”。
如果不引入括號,整個個表示式作為一個組,是group(0)
對於題目中的例子:m = re.match("([abc])+", “abc”)+號在括號外面。括號最多匹配到一個字元,要麼是a, 要麼是c,這個python引擎匹配的是末尾的c。而m.group() == m.group(0) 這個返回的是整個匹配的字串"abc".

來源連結:https://zhidao.baidu.com/question/497549224.html

相關文章