정규 표현식은 파이썬에서 매우 강력한 문자열 처리 도구입니다. 매칭된 텍스트를 찾고 추출하는 데 사용되는데, 때로는 매칭된 텍스트를 변경하고 싶을 수 있습니다. 이를 위해 Python에서는 정규 표현식의 매칭 결과를 변경할 수 있는 다양한 방법을 제공합니다.
1. re.sub()
함수 사용하기
re.sub()
함수는 정규 표현식 패턴과 일치하는 모든 부분을 지정된 문자열로 대체하는 역할을 합니다. 다음은 re.sub()
함수의 기본 사용법입니다:
import re
result = re.sub(pattern, replacement, text)
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()
함수를 사용하여 간단하게 매칭 결과를 변경할 수 있으며, 그룹 캡처나 콜백 함수를 사용하여 더 동적인 변경도 가능합니다. 정규 표현식을 응용하여 다양한 텍스트 처리 작업을 수행할 수 있습니다.