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

정규 표현식은 매우 강력한 도구로, 문자열의 패턴을 찾고 추출하는 데 사용됩니다. 이것은 특히 텍스트 처리, 데이터 분석 및 웹 스크래핑과 같은 작업에 유용합니다. 그러나 정규 표현식이 일치하는 부분을 찾았다면, 결과 문자열을 변경해야 할 때가 종종 있습니다.

Python에서 정규 표현식의 매칭 결과 문자열을 변경하는 방법을 알아보겠습니다.

re.sub() 함수 사용하기

Python의 re 모듈은 정규 표현식을 사용하여 문자열을 처리하는 데 사용됩니다. re.sub() 함수는 주어진 정규 표현식과 일치하는 모든 부분을 다른 문자열로 교체하는 데 사용됩니다.

다음은 re.sub() 함수의 간단한 사용 예입니다:

import re

text = "Hello, World!"
pattern = r"World"
replacement = "Python"

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

결과:

Hello, Python!

위의 코드에서는 re.sub() 함수를 사용하여 문자열 text에서 정규 표현식 pattern과 일치하는 부분을 문자열 replacement로 변경했습니다. 결과적으로, “World”가 “Python”으로 대체된 “Hello, Python!”이라는 새로운 문자열을 얻습니다.

그룹화하여 변경하기

정규 표현식에서 그룹을 사용하면 일치하는 부분을 분리하여 다른 문자열로 변경할 수 있습니다. 그룹은 ( )으로 표시되며, ( ) 내에 있는 패턴은 매칭 결과에서 추출될 수 있습니다.

다음은 그룹을 사용하여 일부 문자열을 변경하는 예입니다:

import re

text = "Hello, John!"
pattern = r"Hello, (\w+)!"
replacement = r"Goodbye, \1!"

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

결과:

Goodbye, John!

위의 코드에서는 (\w+) 정규 표현식 패턴을 사용하여 “Hello, John!”에서 이름을 추출하고, “Goodbye, \1!” 패턴을 사용하여 이름을 “John”으로 변경했습니다. 여기서 \1은 첫 번째 그룹을 참조하는 특수한 표현입니다.

함수를 사용하여 변경하기

re.sub() 함수의 대체로 문자열을 전달할 수도 있지만, 대신 함수를 전달하여 동적으로 변경할 수도 있습니다. 이 함수는 매칭된 결과 문자열을 입력받아 대체 문자열을 반환해야합니다.

다음은 함수를 사용하여 문자열을 동적으로 변경하는 예입니다:

import re

def replace_name(match):
    name = match.group(1)
    return name.upper()

text = "Hello, John!"
pattern = r"Hello, (\w+)!"
new_text = re.sub(pattern, replace_name, text)
print(new_text)

결과:

Hello, JOHN!

위의 코드에서는 replace_name() 함수를 정의하여 매칭된 결과에서 이름을 추출하고, 해당 이름을 대문자로 변경하도록 설정했습니다. 함수가 대체 문자열로 반환하는 결과는 “Hello, JOHN!”입니다.

정규 표현식의 매칭 결과 문자열을 변경하는 방법을 알아봤습니다. re.sub() 함수를 사용하여 정규 표현식에 일치하는 부분을 다른 문자열로 교체하거나, 그룹화 및 함수를 사용하여 동적인 변경을 수행할 수 있습니다. 이를 통해 텍스트 처리 및 데이터 변환 작업을 효율적으로 수행할 수 있습니다.

이로써 정규 표현식의 매칭 결과 문자열 변경에 대한 기본적인 개념을 이해하였습니다. 정규 표현식은 강력한 도구이지만, 특히 복잡한 패턴을 다룰 때는 주의가 요구됩니다. 파이썬 re 모듈과 관련된 공식 문서를 참조하여 보다 심층적인 학습을 진행해보시기 바랍니다.