Match object có thuộc tính .groups() trả về tuple tất cả capturing groups. Dùng len(match.groups()) để đếm số lượng.
Ví dụ
import re
m = re.match(r'(\d)(\d)(\d)', '632')
if m:
print('Số groups:', len(m.groups())) # 3
print('Groups:', m.groups()) # ('6', '3', '2')
print('Group 1:', m.group(1)) # '6'
print('Group 2:', m.group(2)) # '3'
print('Group 3:', m.group(3)) # '2'
Kết quả
Số groups: 3
Groups: ('6', '3', '2')
Group 1: 6
Group 2: 3
Group 3: 2
Lưu ý
- Chỉ tính capturing groups
(...). Non-capturing(?:...)và lookaround(?=...)không tính. - Named groups
(?Pcũng được tính trong...) .groups(). match.lastindexcho số thứ tự group cuối cùng khớp (hoặc None).match.re.groups(pattern attribute) cho tổng số groups trong pattern.
Ví dụ: Pattern có mixed groups
pattern = r'(?P\d{4})-(?:\d{2})-(\d{2})' # Group 1: year (named), Group 2: day (numbered)
# Non-capturing (?:...) cho month
m = re.match(pattern, '2024-01-15')
print('match.groups():', m.groups()) # ('2024', '15') - chỉ 2 capturing groups
print('match.lastindex:', m.lastindex) # 2
print('pattern.groups:', m.re.groups) # 2 (tổng capturing groups trong pattern)
print('match.groupdict():', m.groupdict()) # {'year': '2024'}