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

정규 표현식은 파이썬에서 매우 강력한 문자열 처리 도구입니다. 매칭된 텍스트를 찾고 추출하는 데 사용되는데, 때로는 매칭된 텍스트를 변경하고 싶을 수 있습니다. 이를 위해 Python에서는 정규 표현식의 매칭 결과를 변경할 수 있는 다양한 방법을 제공합니다.

1. re.sub() 함수 사용하기

re.sub() 함수는 정규 표현식 패턴과 일치하는 모든 부분을 지정된 문자열로 대체하는 역할을 합니다. 다음은 re.sub() 함수의 기본 사용법입니다:

import re

result = re.sub(pattern, replacement, text)

다음은 예제 코드입니다. 정규 표현식을 사용하여 텍스트에서 Email 주소를 찾고, ‘@example.com’으로 변경하는 예제입니다:

import re

text = "Contact us at info@example.com or support@example.com."
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
replacement = "@example.com"

result = re.sub(pattern, replacement, text)
print(result)

결과는 다음과 같습니다:

Contact us at info@example.com or support@example.com.

2. re.sub() 함수와 함께 그룹 캡처 사용하기

정규 표현식에서 그룹 캡처를 사용하여 패턴 내의 특정 부분을 추출할 수 있습니다. 이 추출된 그룹을 re.sub() 함수의 replacement 매개변수에서 참조하여 원하는 형태로 변경할 수 있습니다.

다음은 그룹 캡처를 사용하여 텍스트에서 이름 순서를 변경하는 예제입니다:

import re

text = "John Doe"
pattern = r'(\w+)\s(\w+)'
replacement = r'\2, \1'

result = re.sub(pattern, replacement, text)
print(result)

결과는 다음과 같습니다:

Doe, John

3. 콜백 함수를 사용하여 동적으로 변경하기

re.sub() 함수의 대체 문자열을 지정하는 대신, 콜백 함수를 사용하여 매칭 결과에 따라 동적으로 변경할 수도 있습니다. 이를 통해 더 복잡한 로직을 적용할 수 있습니다.

다음은 콜백 함수를 사용하여 HTML 문서에서 태그를 제거하는 예제입니다:

import re

def remove_tags(match):
    tag = match.group(0)
    return ''  # 빈 문자열로 대체

html = "<p>Hello, <a href='https://example.com'>world</a>!</p>"
pattern = r'<.*?>'

result = re.sub(pattern, remove_tags, html)
print(result)

결과는 다음과 같습니다:

Hello, world!

위 예제에서 remove_tags() 함수는 매칭된 태그 문자열을 추출하여 빈 문자열로 대체합니다.


정규 표현식의 매칭 결과 문자열 변경은 문자열 처리 작업에서 매우 유용한 기능입니다. Python에서는 re.sub() 함수를 사용하여 간단하게 매칭 결과를 변경할 수 있으며, 그룹 캡처나 콜백 함수를 사용하여 더 동적인 변경도 가능합니다. 정규 표현식을 응용하여 다양한 텍스트 처리 작업을 수행할 수 있습니다.