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

정규 표현식은 문자열 패턴을 정의하고 매칭되는 부분을 찾는 강력한 도구입니다. 이러한 매칭 결과를 변경하고 싶을 때는 어떻게 해야할까요?

Python에서는 re 모듈을 사용하여 정규 표현식을 처리할 수 있습니다. 이 모듈에는 문자열을 변경하는 다양한 메서드가 있으며, 이를 활용하여 매칭 결과를 원하는 대로 수정할 수 있습니다.

아래는 정규 표현식의 매칭 결과를 변경하는 몇 가지 예시입니다.

1. re.sub() 메서드를 사용한 문자열 변경

re.sub() 메서드를 사용하여 매칭된 부분을 다른 문자열로 변경할 수 있습니다. 이 메서드는 다음과 같은 형식으로 사용됩니다.

re.sub(pattern, repl, string)

아래는 간단한 예시입니다.

import re

sentence = "I love coding"
replaced = re.sub("love", "enjoy", sentence)

print(replaced)  # Output: "I enjoy coding"

위의 예시에서는 “love”라는 단어를 “enjoy”로 변경하였습니다. re.sub() 메서드는 첫 번째 매개변수로 정규 표현식 대신 단순 문자열을 사용할 수도 있습니다.

2. re.sub() 메서드와 사용자 정의 함수를 활용한 문자열 변경

re.sub() 메서드의 두 번째 매개변수로 사용자 정의 함수를 전달할 수도 있습니다. 이 함수는 매칭된 결과를 받아 처리하여 변경된 결과를 반환합니다. 아래는 예시입니다.

import re

def to_upper(match):
    return match.group(0).upper()

sentence = "I love coding"
replaced = re.sub(r"\b\w+\b", to_upper, sentence)

print(replaced)  # Output: "I LOVE CODING"

위의 예시에서는 정규 표현식 \b\w+\b를 사용하여 단어를 찾고, to_upper() 함수를 통해 매칭된 단어를 대문자로 변경하였습니다.

3. re.subn() 메서드를 사용한 문자열 변경 및 매칭 횟수 카운트

re.subn() 메서드는 re.sub()와 유사하지만, 변경된 문자열과 매칭된 횟수를 튜플로 반환합니다. 이를 활용하여 매칭 횟수를 확인할 수 있습니다.

import re

sentence = "I love coding, love coding, love coding!"
replaced, count = re.subn("love", "enjoy", sentence)

print(replaced)  # Output: "I enjoy coding, enjoy coding, enjoy coding!"
print(count)  # Output: 3

위의 예시에서는 “love”를 “enjoy”로 변경하고, 매칭된 횟수를 확인하였습니다. re.subn() 메서드는 (변경된문자열, 매칭횟수) 형태의 튜플을 반환합니다.

정규 표현식의 매칭 결과를 변경하는 방법에 대해 알아보았습니다. 이러한 기능을 활용하면 텍스트 처리에 유용하게 활용할 수 있습니다.