[파이썬] 문자열의 정규식 매칭 그룹 참조

정규식(regular expression)은 문자열에서 특정한 패턴을 찾기 위해 사용되는 강력한 도구입니다. 정규식을 사용하면 문자열의 매칭, 검색, 치환 등 다양한 작업을 효과적으로 수행할 수 있습니다. 하지만 때로는 매칭된 부분 중에서 특정한 그룹만을 가져와야 하는 경우도 있을 것입니다.

Python에서는 re 모듈을 사용하여 정규식을 다룰 수 있습니다. 이번 블로그 포스트에서는 정규식 매칭된 그룹을 참조하는 방법에 대해 알아보겠습니다.

그룹 매칭하기

정규식의 그룹은 괄호로 묶인 부분을 의미합니다. 예를 들어, 아래와 같은 정규식을 생각해 봅시다.

import re

pattern = r'(\d{2})-(\d{2})-(\d{4})'

위의 정규식은 dd-dd-dddd 형식(예: 01-01-2022)의 날짜 문자열을 매칭하는 패턴입니다. 이 정규식에는 세 개의 그룹이 있습니다. 첫 번째 그룹은 월, 두 번째 그룹은 일, 세 번째 그룹은 연도를 의미합니다.

그룹 참조하기

정규식 패턴에 매칭되는 문자열을 검색하면, 각 그룹에 대한 정보를 얻을 수 있습니다. re 모듈의 search 함수를 사용하여 그룹 참조를 할 수 있습니다.

import re

pattern = r'(\d{2})-(\d{2})-(\d{4})'
date_string = 'Today is 01-01-2022'

result = re.search(pattern, date_string)

month = result.group(1)
day = result.group(2)
year = result.group(3)

print(f"Month: {month}")
print(f"Day: {day}")
print(f"Year: {year}")

위의 코드에서는 search 함수를 사용하여 date_string에서 pattern과 일치하는 부분을 찾습니다. 그리고 group 메소드를 이용하여 매칭된 그룹을 가져옵니다. 위의 예제에서는 월, 일, 연도에 해당하는 세 개의 그룹을 가져왔습니다.

그룹 참조 활용하기

그룹 참조를 함께 사용하면 더욱 강력한 작업을 수행할 수 있습니다. 예를 들어, 매칭된 그룹을 가지고 문자열을 치환하는 작업을 해보겠습니다.

import re

pattern = r'(\d{2})-(\d{2})-(\d{4})'
date_string = 'Today is 03-15-2022'

# 매칭된 그룹을 치환
result = re.sub(pattern, r'\2/\1/\3', date_string)

print(f"Replaced string: {result}")

위의 코드에서는 re.sub 함수를 사용하여 date_string에서 매칭된 그룹을 치환합니다. 치환 패턴에서 \2는 첫 번째 그룹, \1은 두 번째 그룹, \3은 세 번째 그룹을 가리키고 있습니다. 따라서 위의 예제에서는 날짜 형식을 15/03/2022로 변경한 결과를 출력합니다.

그룹 참조를 할 수 있는 정규식은 다양한 상황에서 유용하게 활용될 수 있습니다. 정규식의 그룹을 잘 활용하여 문자열 처리 작업을 더욱 효율적으로 수행하세요!

이상으로 Python에서 문자열의 정규식 매칭 그룹 참조에 대해 알아보았습니다. 질문이나 추가 정보가 있으시면 댓글로 남겨주세요.