인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김은혜님의 프로필 이미지

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

04-03 path와 re_path를 활용한 URL 패턴 정의와 커스텀 Date Converter

정규표현식

해결된 질문

작성

·

47

0

안녕하세요! 강의 들으며 많은 부분 배우고 있습니다.

DateCoverter 정규표현식 부분을 보면서 드는 의문이 있어 질문드립니다.

제가 이해한 바가 맞다면, 정규표현식에서 {1,2}부분은 앞부분의 패턴을 1번 또는 2번 반복한다고 이해했습니다.

그렇다면 r"20\d{2}/([1-9]|0[1-9]|1[0-2]){1,2}/([1-9]|0[1-9]|[12][0-9]|3[01]){1,2}"라는 정규표현식에서

월과 일의 숫자를 체크하는 부분이 1번 또는 2번 반복될 수도 있으니 "2023/0303/1212"와 같은 문자열도 통과 가능한 것일까요?

답변 2

0

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

질문주신 대로 정규표현식 패턴에 오류가 있네요. ㅎㅎ 지적해주셔서 감사드립니다.

아래와 같이 다시 구성해볼 수 있을 듯 합니다. :-)

^20\d{2}/(0?[1-9]|1[0-2])/(0?[1-9]|[12]\d|3[01])$

강의를 즐겨주시고, 이렇게 질문도 주셔서 다시 한 번 더 감사드립니다.

화이팅입니다 !!! ;-)

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 김은혜님.

정규표현식에 대한 질문을 주셨네요. 질문하신 부분을 보면, {1,2}는 바로 앞에서 일치하는 패턴을 1번 또는 2번 반복한다는 뜻입니다. 따라서 ([1-9]|0[1-9]|1[0-2]){1,2} 부분은 1자리 혹은 2자리의 숫자로 이루어진 두 번 일치할 수 있음을 의미합니다.

따라서 “2023/0303/1212”와 같은 문자열도 패턴에 일치하게 됩니다. 이 부분에서 정규표현식을 수정하여 월과 일이 반드시 한 번만 일치하게 변경하려면 {1,2} 대신 {2}를 사용하는 것이 적합합니다. 이렇게 하면 월과 일이 각각 2자리 숫자로 고정되어야만 일치하게 설정할 수 있습니다.

관련된 토론은 이전 질문에서 참조할 수 있습니다. 예를 들어, URL 정규표현식 질문입니다!에 보면 re_path와 관련된 정규표현식에서의 시작과 끝을 명시하는 방법에 대해 설명한 부분이 있습니다.

질문을 잘 해결하시길 바라며, 추가 궁금한 점 있으시다면 망설이지 마시고 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다. 저도 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

감사합니다.