Python의 re 모듈을 사용하면 정규식 패턴에 포함된 캡처 그룹(capture group)의 개수를 손쉽게 확인할 수 있습니다. 핵심은 매치 객체(match object)에서 제공하는 groups() 메서드를 활용하는 것입니다.
캡처 그룹 개수 구하기
groups() 메서드는 매치된 문자열 중 각 캡처 그룹에 해당하는 부분을 튜플(tuple) 형태로 반환합니다. 따라서 이 튜플에 len() 함수를 적용하면 캡처 그룹의 총 개수를 바로 알 수 있습니다.
예제 코드
import re m = re.match(r"(\d)(\d)(\d)", "632") print(len(m.groups()))
실행 결과
3
위 예제에서 정규식 (\d)(\d)(\d)는 세 개의 캡처 그룹을 포함하고 있습니다. m.groups()는 ('6', '3', '2')라는 튜플을 반환하며, 이 튜플의 길이가 3이므로 출력 결과 역시 3이 됩니다.
참고: lastindex 속성 활용하기
매치 객체의 lastindex 속성을 사용하면 마지막으로 매치된 캡처 그룹의 인덱스를 확인할 수 있습니다. 모든 그룹이 매치에 참여한 경우 이 값은 캡처 그룹의 개수와 일치합니다.
import re m = re.match(r"(\d)(\d)(\d)", "632") print(m.lastindex) # 3
다만 선택적(optional) 그룹이 있는 패턴에서는 일부 그룹이 매치에 참여하지 않을 수 있으므로, 정확한 그룹 개수를 얻으려면 len(m.groups()) 방식을 사용하는 것이 가장 안전합니다.