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

정규 표현식(Regular Expression)은 문자열 패턴을 정의하고 검색, 매칭, 수정하는 데에 유용한 표현 방법입니다. Python의 re 모듈은 정규 표현식을 사용할 수 있도록 지원하며, 매칭된 결과를 수정하는 기능도 제공합니다.

이번 포스트에서는 Python을 사용하여 정규 표현식의 매칭 결과 문자열을 수정하는 방법에 대해 알아보겠습니다.

1. re.sub() 함수를 사용한 문자열 수정

매칭된 결과를 수정하기 위해 re 모듈에서 제공하는 sub() 함수를 사용할 수 있습니다. 이 함수는 지정한 정규 표현식 패턴과 일치하는 문자열을 새로운 값으로 치환하는 역할을 합니다.

다음은 re.sub() 함수의 기본적인 사용법입니다:

import re

pattern = r'정규표현식 패턴'
replacement = '새로운 값'
modified_string = re.sub(pattern, replacement, original_string)

위의 코드에서 pattern은 치환하고자 하는 정규 표현식 패턴이고, replacement은 새로운 값으로 대체하기 위한 문자열입니다. original_string은 수정하고자 하는 원본 문자열을 나타냅니다. re.sub() 함수는 original_string에서 pattern과 일치하는 문자열을 replacement으로 치환한 결과를 반환합니다.

2. 그룹을 이용한 매칭 결과 접근

정규 표현식 패턴을 사용할 때, 패턴 내부에 그룹을 지정하여 해당 그룹에 매칭된 결과를 추출할 수도 있습니다. 이렇게 추출된 그룹은 re.sub() 함수에서 참조하여 치환 값을 동적으로 생성할 수 있습니다.

예를 들어, 다음과 같은 패턴을 고려해 봅시다:

import re

pattern = r'(패턴1)|(패턴2)'
replacement = r'\1 \2'  # 첫 번째 그룹과 두 번째 그룹 사이에 공백 추가
modified_string = re.sub(pattern, replacement, original_string)

위의 예시에서 pattern은 두 개의 그룹으로 이루어져 있습니다. replacement 문자열에서 \1은 첫 번째 그룹에 매칭된 결과를 나타내고, \2는 두 번째 그룹에 매칭된 결과를 나타냅니다. 이렇게 나타낸 치환 문자열은 매칭된 결과에 따라 동적으로 생성되며, re.sub() 함수에서 해당 값을 사용하여 치환 작업을 수행합니다.

3. Flags 옵션을 사용한 정규 표현식 수정

Python의 re 모듈은 정규 표현식 패턴 매칭 시의 다양한 옵션을 제공합니다. 예를 들어, 대소문자를 구별하지 않고 매칭을 수행하거나, 여러 줄에 걸친 문자열에서 패턴을 검색할 수 있습니다. 이러한 옵션을 re.sub() 함수를 사용할 때 함께 적용할 수 있습니다.

다음은 re.sub() 함수에서 Flags 옵션을 사용한 예시입니다:

import re

pattern = r'(?i)정규표현식패턴'  # 대소문자를 구별하지 않는 매칭
replacement = '새로운 값'
modified_string = re.sub(pattern, replacement, original_string, flags=re.IGNORECASE)

위의 코드에서 (?i)는 대소문자를 구별하지 않는 매칭을 의미합니다. re.sub() 함수의 flags 매개변수에 re.IGNORECASE 옵션을 지정하여 패턴 매칭 시 대소문자를 무시하도록 설정할 수 있습니다.

마무리

정규 표현식의 매칭 결과 문자열 수정은 re.sub() 함수를 사용하여 쉽게 수행할 수 있습니다. 그룹을 활용하거나 Flags 옵션을 설정하여 더 다양한 수정 작업을 수행할 수도 있습니다. Python의 re 모듈은 이러한 기능을 제공하여 문자열 수정 작업을 간편하게 처리할 수 있도록 도와줍니다.

참고: Python 공식 문서 - re 모듈