Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 정규식에서 캡처 그룹 개수를 구하는 방법

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()) 방식을 사용하는 것이 가장 안전합니다.