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

정규 표현식은 문자열을 패턴으로 매칭하고 추출하는 데에 유용한 도구입니다. Python에서는 re 모듈을 사용하여 정규 표현식을 처리할 수 있습니다. 이번 포스트에서는 정규 표현식의 매칭 결과를 다루는 방법에 대해 알아보겠습니다.

1. 매칭된 문자열 추출하기

re 모듈을 사용하여 정규 표현식을 컴파일한 뒤, match() 함수로 문자열을 매칭시킬 수 있습니다. 매칭 결과로는 Match 객체가 반환되며, 이를 활용하여 매칭된 문자열을 추출할 수 있습니다.

import re

pattern = r'(\d{2})-(\d{2})-(\d{4})'  # 날짜 패턴: dd-mm-yyyy
text = '오늘은 10-27-2022 입니다.'

match = re.match(pattern, text)
if match:
    matched_string = match.group()  # 매칭된 전체 문자열
    day = match.group(1)  # 첫 번째 그룹에 해당하는 문자열
    month = match.group(2)  # 두 번째 그룹에 해당하는 문자열
    year = match.group(3)  # 세 번째 그룹에 해당하는 문자열

    print(f'매칭된 전체 문자열: {matched_string}')
    print(f'일: {day}')
    print(f'월: {month}')
    print(f'년: {year}')

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

매칭된 전체 문자열: 10-27-2022
일: 10
월: 27
년: 2022

2. 매칭된 문자열 대체하기

정규 표현식을 활용하여 매칭된 문자열을 대체할 수도 있습니다. re 모듈의 sub() 함수를 사용하여 원하는 패턴을 다른 문자열로 치환할 수 있습니다.

import re

pattern = r'\bapple\b'  # apple을 찾아서
text = 'I like apple and orange.'

replaced_text = re.sub(pattern, 'banana', text)  # banana로 대체

print(replaced_text)

실행 결과는 아래와 같습니다:

I like banana and orange.

3. 매칭된 문자열 분할하기

정규 표현식을 사용하면 매칭된 문자열을 기준으로 텍스트를 분할할 수도 있습니다. re 모듈의 split() 함수를 사용하여 특정 패턴에 따라 문자열을 분할할 수 있습니다.

import re

pattern = r'\s+'  # 공백 문자를 기준으로 분할
text = 'Hello   World    Python'

splitted_text = re.split(pattern, text)

print(splitted_text)

실행 결과는 아래와 같습니다:

['Hello', 'World', 'Python']

마무리

이번 포스트에서는 Python에서 정규 표현식의 매칭 결과를 다루는 방법에 대해 살펴보았습니다. re 모듈의 다양한 함수를 활용하여 매칭된 문자열을 추출하거나 대체하며, 분할하는 작업을 수행할 수 있습니다. 정규 표현식은 문자열 처리를 더욱 효율적으로 할 수 있는 강력한 도구이니, 업무나 개인 프로젝트에서 유용하게 활용해보세요!