Python search 메서드에서 캡처 그룹 사용하기
검색 시 발견된 부분 문자열을 소위 캡처 그룹으로 나누는 것이 편리한 경우가 많습니다. 이는 발견된 내용을 별도의 부분으로 분해하는 방법입니다[citation:3]. 이를 사용하려면 정규 표현식의 일부를 둥근 괄호로 감싸면 됩니다[citation:1][citation:6].
실제로 시도해 보겠습니다. 다음과 같은 문자열이 있다고 가정해 봅시다:
txt = '123 456'
이제 숫자 부분 문자열을 캡처 그룹으로 분해해 보겠습니다. 이를 위해 다음 정규 표현식을 작성합니다:
res = re.search('(\d+) (\d+)', txt)
결과로 match 객체를 얻게 됩니다[citation:4]. 이 객체의 인덱스 1 요소에는 첫 번째 캡처 그룹이, 인덱스 2 요소에는 두 번째 캡처 그룹이, 인덱스 0 요소에는 발견된 전체 문자열(소위 0번 그룹)이 들어갑니다[citation:3]:
print(res[0]) # '123 456' - 발견된 전체 문자열
print(res[1]) # '123' - 첫 번째 캡처 그룹
print(res[2]) # '456' - 두 번째 캡처 그룹
도메인을 포함하는 문자열이 주어졌습니다:
txt = 'sss domain.ru zzz'
해당 도메인을 찾아서 그 이름을 첫 번째 캡처 그룹에, 도메인 존(zone)을 두 번째 캡처 그룹에 넣으세요.
날짜를 포함하는 문자열이 주어졌습니다:
txt = '31.12.2025'
날짜(day)를 첫 번째 캡처 그룹에, 월(month)을 두 번째 캡처 그룹에, 연도(year)를 세 번째 캡처 그룹에 넣으세요[citation:10].