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

파이썬 정규식으로 날짜 문자열 형식 일치 여부 확인하는 방법

정규식(Regular Expression)을 사용하면 날짜 문자열이 특정 형식을 따르는지 손쉽게 검증할 수 있습니다. 아래 예제에서는 파이썬의 re.match() 함수를 활용해 날짜 문자열이 "일-월-년(d-m-y)" 형식과 일치하는지 확인하는 방법을 살펴봅니다.

정규식 패턴 분석

예제에서 사용된 정규식 패턴은 다음과 같습니다.

(\d{2})[/.-](\d{2})[/.-](\d{4})$
  • \d{2}: 두 자리 숫자(일 또는 월)를 의미합니다.
  • [/.-]: 하이픈(-), 슬래시(/), 마침표(.) 중 하나를 구분자로 허용합니다.
  • \d{4}: 네 자리 숫자(연도)를 의미합니다.
  • $: 문자열의 끝을 나타내며, 패턴 뒤에 추가 문자가 없어야 함을 보장합니다.

예제 코드

첫 번째 경우에는 주어진 날짜 문자열이 d-m-y 형식과 일치하고, 두 번째 경우에는 형식이 일치하지 않아 None이 반환됩니다.

import re

# 일치하는 경우: d-m-y 형식
datestring = '21-09-1991'
foo = re.match(r'(\d{2})[/.-](\d{2})[/.-](\d{4})$', datestring)
print(foo.group())

# 일치하지 않는 경우: y-m-d 형식
datestring = '1991-09-21'
foo = re.match(r'(\d{2})[/.-](\d{2})[/.-](\d{4})$', datestring)
print(foo)

실행 결과

21-09-1991
None

결과 설명

'21-09-1991'은 "두 자리 숫자 - 두 자리 숫자 - 네 자리 숫자" 구조를 가지므로 패턴과 완전히 일치하며, match 객체가 반환됩니다. 반면 '1991-09-21'은 연도가 앞에 오는 y-m-d 형식이므로 패턴과 일치하지 않아 None이 출력됩니다.

참고로, 정규식 문자열 앞에 r 접두사(raw string)를 붙이면 백슬래시 이스케이프 처리 문제를 피할 수 있어 권장됩니다. 또한 위 예제는 최신 파이썬 3 문법(print() 함수) 기준으로 작성되었습니다.