Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 정규식으로 텍스트에서 날짜 추출하는 방법

텍스트 데이터를 다루다 보면 문장 속에 섞여 있는 날짜 정보만 골라내야 하는 경우가 자주 있습니다. 이럴 때 파이썬의 re(정규식) 모듈을 활용하면 원하는 형식의 날짜를 간단하게 찾아낼 수 있습니다.

기본 예제

다음 예제는 주어진 문자열에서 YYYY-MM-DD 형식의 날짜를 정규식으로 검색한 뒤, 이를 datetime 객체로 변환하여 출력합니다.

import datetime
import re

s = "Jason's birthday is on 1991-09-21"
match = re.search(r'\d{4}-\d{2}-\d{2}', s)
date = datetime.datetime.strptime(match.group(), '%Y-%m-%d').date()
print(date)

실행 결과

위 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.

1991-09-21

코드 동작 원리

1. 정규식 패턴 분석

r'\d{4}-\d{2}-\d{2}' 패턴은 다음과 같은 의미를 가집니다.

  • \d{4}: 숫자 4자리 → 연도(예: 1991)
  • -: 하이픈 구분자
  • \d{2}: 숫자 2자리 → 월(예: 09)
  • \d{2}: 숫자 2자리 → 일(예: 21)

2. re.search()로 패턴 매칭

re.search() 함수는 문자열 전체를 훑어 패턴과 일치하는 첫 번째 부분을 찾아 매치 객체(match object)를 반환합니다. 일치하는 부분이 없으면 None을 반환하므로, 실무에서는 반드시 if match: 조건문으로 존재 여부를 확인한 뒤 사용하는 것이 안전합니다.

3. strptime()으로 날짜 객체 변환

match.group()으로 추출된 날짜는 아직 문자열 상태입니다. datetime.strptime()에 포맷 코드 '%Y-%m-%d'를 지정하면 이를 실제 날짜 객체로 변환할 수 있으며, 이후 연도·월·일 비교나 날짜 계산 등 다양한 작업에 활용할 수 있습니다.

참고: 다양한 날짜 형식 처리하기

날짜가 1991/09/21처럼 슬래시로 구분되어 있다면 패턴을 r'\d{4}/\d{2}/\d{2}'로 바꾸거나, 하이픈과 슬래시를 모두 허용하려면 r'\d{4}[-/]\d{2}[-/]\d{2}'처럼 문자 클래스를 사용하면 됩니다.