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

정규 표현식은 문자열에서 패턴을 찾고 매칭된 결과를 가져올 수 있는 강력한 도구입니다. 하지만 때로는 매칭된 결과 문자열을 대체해야 할 필요가 있을 수 있습니다. Python에서는 re 모듈을 사용하여 정규 표현식 매칭 결과를 쉽게 대체할 수 있습니다.

re.sub() 함수

Python의 re 모듈에는 문자열 내의 패턴을 찾아 다른 문자열로 대체하는 sub() 함수가 있습니다. 아래는 sub() 함수의 기본 구문입니다.

re.sub(pattern, repl, string, count=0, flags=0)

예제

간단한 예제를 통해 re.sub() 함수의 사용법을 살펴보겠습니다. 아래 코드는 문자열에서 숫자를 “*” 문자로 대체하는 예제입니다.

import re

string = "The price is $20.99. It's 50% off!"
pattern = r"\d+"  # 숫자 패턴을 나타내는 정규 표현식

replaced_string = re.sub(pattern, "*", string)
print(replaced_string)

결과는 다음과 같습니다.

The price is $.**. It's % off!

위의 예제에서는 "\d+" 패턴을 사용하여 숫자를 찾고, 찾은 숫자를 “*” 문자로 대체했습니다.

그룹 활용

re.sub() 함수를 사용하면 정규 표현식의 그룹화 기능을 활용하여 매칭된 특정 부분을 다른 문자열로 대체할 수도 있습니다. 아래 예제는 “Lastname, Firstname” 형식의 이름을 “Firstname Lastname”으로 바꾸는 예제입니다.

import re

name = "Doe, John"
pattern = r"(\w+), (\w+)"  # "Lastname, Firstname" 패턴

replaced_name = re.sub(pattern, r"\2 \1", name)
print(replaced_name)

결과는 다음과 같습니다.

John Doe

위의 예제에서는 (\w+), (\w+) 패턴을 사용하여 “Lastname, Firstname” 형식의 이름을 매칭했습니다. r"\2 \1"은 첫 번째 그룹(\1)과 두 번째 그룹(\2)을 순서를 바꾸어 대체하는 것을 나타냅니다.

정규 표현식의 매칭 결과 문자열 대체는 강력한 기능이며, Python의 re 모듈을 사용하여 쉽게 수행할 수 있습니다. 이를 활용하면 원하는 형식으로 문자열을 변환하거나 특정 부분을 대체할 수 있습니다.