[파이썬] 정규 표현식의 매칭 결과 문자열 치환

정규 표현식은 문자열에서 패턴을 찾거나 매치하는 강력한 도구입니다. 매칭을 통해 찾은 패턴을 원하는 형태로 변환하는 작업은 자주 수행되는 일 중 하나입니다. 이를 문자열 치환이라고 합니다.

Python에서는 re 모듈을 사용하여 정규 표현식을 처리하고, re.sub() 함수를 이용하여 매칭 결과의 문자열을 치환할 수 있습니다. re.sub() 함수는 패턴에 매칭된 부분을 다른 문자열로 치환하여 반환합니다.

다음은 정규 표현식의 매칭 결과 문자열 치환을 위한 기본적인 사용법입니다:

import re

# 정규 표현식 패턴을 정의합니다. (예: 'apple')
pattern = r'apple'

# 문자열에서 패턴에 매칭되는 부분을 'orange'로 치환합니다.
result = re.sub(pattern, 'orange', 'I have an apple.')

print(result)  # 출력: I have an orange.

위 예제에서는 'I have an apple.'이라는 문자열에서 'apple'이라는 패턴을 찾아 'orange'로 치환했습니다. 따라서 출력 결과는 'I have an orange.'이 됩니다.

또한, 정규 표현식을 사용하여 매칭된 부분을 동적으로 치환할 수도 있습니다. 이를 위해서는 패턴으로부터 매칭 결과를 그룹으로 묶어야 합니다. 그룹은 괄호 ( )를 사용하여 표현할 수 있습니다. re.sub() 함수의 두 번째 인자로 치환하는 부분에서 \g<그룹번호>를 사용하여 매칭된 그룹을 참조할 수 있습니다.

다음은 매칭된 그룹을 사용하여 정규 표현식의 매칭 결과 문자열을 치환하는 예제입니다:

import re

# 정규 표현식 패턴에서 그룹을 정의합니다. (예: '(\d+)-(\d+)-(\d+)')
pattern = r'(\d+)-(\d+)-(\d+)'

# 문자열에서 패턴에 매칭되는 부분을 'Year: \g<1>, Month: \g<2>, Day: \g<3>'으로 치환합니다.
result = re.sub(pattern, r'Year: \g<1>, Month: \g<2>, Day: \g<3>', 'Date: 2022-01-01')

print(result)  # 출력: Date: Year: 2022, Month: 01, Day: 01

위 예제에서는 'Date: 2022-01-01'이라는 문자열에서 (\d+)-(\d+)-(\d+) 패턴을 찾아 Year: \g<1>, Month: \g<2>, Day: \g<3> 형식으로 치환했습니다. 따라서 출력 결과는 'Date: Year: 2022, Month: 01, Day: 01'이 됩니다.

이와 같이 정규 표현식의 매칭 결과 문자열 치환은 Python에서 간단하게 처리할 수 있습니다. 정규 표현식을 잘 활용하여 문자열을 원하는 형태로 변환하는 작업을 효과적으로 수행해보세요.