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

정규 표현식은 문자열에서 패턴을 찾고 매칭된 부분을 다른 문자열로 대체하는 데에 매우 유용합니다. 파이썬에서는 정규 표현식의 매칭 결과를 문자열 대체(substitution)하여 변형시킬 수 있는 강력한 기능을 제공하고 있습니다. 이번 블로그 포스트에서는 정규 표현식의 매칭 결과를 문자열 대체하는 방법과 관련된 기능을 알아보겠습니다.

re 모듈

파이썬에서 정규 표현식을 다루기 위해서는 re 모듈을 import 해야 합니다. re 모듈에는 다양한 함수와 메서드가 있지만, 여기서는 sub() 메서드를 사용하여 문자열 대체 기능을 다루겠습니다.

import re

sub() 메서드

sub() 메서드를 사용하면 정규 표현식 패턴과 대체 문자열을 지정하여, 패턴에 매칭되는 부분을 대체할 수 있습니다. sub() 메서드는 아래와 같은 형식을 가집니다.

re.sub(pattern, repl, string)

예제

이제 예제를 통해 sub() 메서드의 사용법을 살펴보겠습니다.

import re

# 입력 문자열 정의
text = "Hello, my name is John. John is a software engineer."

# "John"을 "Alice"로 대체
new_text = re.sub("John", "Alice", text)

print(new_text)

위의 예제에서는 입력 문자열에서 “John”이라는 문자열을 “Alice”로 대체하고 있습니다. 결과적으로 출력되는 new_text는 다음과 같습니다.

Hello, my name is Alice. Alice is a software engineer.

정규 표현식으로 매칭하기

sub() 메서드에서 사용되는 정규 표현식 패턴은 다양한 기능을 가지고 있습니다. 예를 들어, 패턴에 조건문(|)을 사용하여 매칭할 문자열을 여러 가지로 지정할 수도 있습니다.

import re

text = "Python is a popular programming language."
new_text = re.sub("Python|programming", "Java", text)

print(new_text)

위의 예제에서는 입력 문자열에서 “Python” 또는 “programming”이라는 문자열을 “Java”로 대체하고 있습니다. 결과적으로 출력되는 new_text는 다음과 같습니다.

Java is a popular Java language.

정규 표현식으로 매칭된 부분 활용하기

sub() 메서드에서 대체 문자열에 정규 표현식으로 매칭된 부분을 활용할 수도 있습니다. 이때는 \g<그룹번호>를 사용하여 대체 문자열에서 해당 그룹을 참조할 수 있습니다.

import re

text = "Today's date is 2022-12-31."
new_text = re.sub(r"(\d{4})-(\d{2})-(\d{2})", r"\g<2>/\g<3>/\g<1>", text)

print(new_text)

위의 예제에서는 입력 문자열에서 YYYY-MM-DD 형식의 날짜를 MM/DD/YYYY로 변환하고 있습니다. 결과적으로 출력되는 new_text는 다음과 같습니다.

Today's date is 12/31/2022.

결론

정규 표현식을 사용하여 매칭된 문자열을 대체하는 것은 파이썬에서 간단하면서도 강력한 기능입니다. 여기서는 sub() 메서드를 중심으로 정규 표현식의 매칭 결과 문자열 대체에 대해 알아보았습니다. 이를 통해 원하는 패턴을 찾고 대체하여 문자열을 효과적으로 가공할 수 있습니다.