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

정규 표현식은 문자열에서 패턴을 찾고 추출하는 강력한 도구입니다. 이를 통해 문자열의 조작이 가능하며, 이 중 하나는 매칭 결과 문자열을 변경하는 것입니다. Python에서는 re 모듈을 사용하여 정규 표현식을 처리할 수 있습니다.

아래는 정규 표현식의 매칭 결과 문자열을 변경하는 방법에 대한 예시입니다.

re.sub() 함수로 매칭된 문자열 변경하기

Python의 re.sub() 함수는 주어진 정규 표현식과 일치하는 모든 패턴을 다른 문자열로 대체합니다. 이를 사용하여 매칭된 문자열을 변형할 수 있습니다.

import re

text = "Hello, World! Today is a beautiful day."
pattern = r"\b(\w)\w+\b"  # 단어의 첫 번째 문자만 대문자로 변경

changed_text = re.sub(pattern, lambda match: match.group(0).capitalize(), text)
print(changed_text)

위 예제에서는 주어진 문자열에서 각 단어의 첫 번째 문자만 대문자로 변경하는 패턴을 사용했습니다. re.sub() 함수의 첫 번째 인자로 정규 표현식 패턴을, 두 번째 인자로 변경할 문자열 또는 그에 대한 콜백 함수를 전달합니다.

실행 결과는 다음과 같습니다:

Hello, World! Today Is A Beautiful Day.

이와 같이 re.sub() 함수를 사용하여 매칭된 문자열을 손쉽게 변경할 수 있습니다. 이를 통해 정규 표현식을 활용하여 원하는 형식의 문자열을 생성하거나, 특정 내용을 치환할 수 있습니다.

정규 표현식 매칭 그룹 활용하기

정규 표현식에서 괄호로 둘러싼 부분은 매칭 그룹으로 취급됩니다. 이를 활용하여 매칭된 문자열 일부를 변경할 수 있습니다.

import re

text = "apple: $2, banana: $1, orange: $1.5"
pattern = r"\$(\d+(\.\d{1,2})?)"  # 매칭 그룹을 사용한 가격 변경

changed_text = re.sub(pattern, r"\1.99", text)
print(changed_text)

위 예제에서는 주어진 문자열에서 가격 부분을 찾아 1.99로 변경했습니다. 이를 위해 정규 표현식 패턴을 사용하고, re.sub() 함수의 두 번째 인자로 \1.99라는 변경할 문자열을 전달했습니다. \1은 첫 번째 매칭 그룹을 의미하며, .99는 변경할 가격입니다.

실행 결과는 다음과 같습니다:

apple: $1.99, banana: $1.99, orange: $1.99

결론

Python의 re.sub() 함수를 사용하여 정규 표현식의 매칭 결과 문자열을 변경할 수 있습니다. re.sub() 함수를 활용하면 간편하게 매칭된 문자열을 다른 값으로 치환할 수 있으며, 이를 통해 문자열 조작에 대한 다양한 요구사항을 처리할 수 있습니다.