Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách lấy số lượng capturing groups trong Python Regex

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 (?P...) cũng được tính trong .groups().
  • match.lastindex cho 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'}