C.W.K.
Stream
Lesson 12 of 12 · published

실전 — 전화번호, 날짜, 이메일 (순수 클래스)

~12 min · practical, validation, composition

Level 0패턴 호기심
0 XP0/90 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

프리미티브를 실전 패턴으로 조립

이제 놀랄 만큼 강력한 패턴 쓸 도구 충분히 가짐. 트랙 3 의 *+? quantifier 모르고도 이전 힌트의 {n} 와 배운 클래스만으로 이미 가능.

미국 전화번호

모양: 3 숫자, 하이픈, 3 숫자, 하이픈, 4 숫자. 패턴: \d{3}-\d{3}-\d{4}. 전체 문자열 검증엔 ^...$ 앵커, 텍스트 안 검색이면 그대로.

ISO 날짜

모양: 4 숫자, 하이픈, 2 숫자, 하이픈, 2 숫자. 패턴: \d{4}-\d{2}-\d{2}. 같은 조립 원칙.

주의: 이건 9999-99-99 도 매칭. 정규식은 모양 검증, semantics 아님. 날짜가 진짜인지 확인 필요면 정규식 매칭 후 date 라이브러리.

단순 이메일 (모양만)

진짜 이메일 정규식은 유명한 저주 (가장 긴 발표된 게 6,000 자 넘음). 99% 케이스엔 이거로 충분: [\w.+-]+@[\w-]+\.[\w.-]+

왼쪽에서 오른쪽으로 읽기: word 글자 또는 .+- (local part), 리터럴 @, word 글자 또는 - (domain), 리터럴 점, word 글자 또는 .- (TLD, 서브도메인 허용).

이게 가르치는 패턴

실전 정규식은 이렇게 빌드:

  1. 모양을 한국어/영어로 묘사 ("3 숫자, 하이픈, 3 숫자, 하이픈, 4 숫자").
  2. 각 조각을 맞는 가장 작은 character class 또는 shorthand 로 교체 (\d{3}, 그 다음 - 리터럴).
  3. 검증이면 앵커, 검색이면 열어두기.
  4. 입력 셋으로 테스트: known-good, known-bad, edge case.

트랙 6 와 7 에서 quantifier + group 추가해 수십 번 반복. 멘탈 모션은 같음.

Code

프리미티브로 만든 진짜 패턴 셋·python
import re

# 미국 전화 (텍스트 어디든 검색)
phone = r'\d{3}-\d{3}-\d{4}'
re.findall(phone, 'Call 415-555-0199 or 212-867-5309')
# ['415-555-0199', '212-867-5309']

# ISO 날짜 검증 (전체 문자열만)
date = r'^\d{4}-\d{2}-\d{2}$'
bool(re.fullmatch(date, '2026-05-04'))   # True
bool(re.fullmatch(date, '2026-5-4'))     # False (2 자리 필요)
bool(re.fullmatch(date, '9999-99-99'))   # True (모양 OK, semantics X)

# 이메일 (loose, 모양만)
email = r'[\w.+-]+@[\w-]+\.[\w.-]+'
re.findall(email, 'reach me at hi+tag@example.co.kr today')
# ['hi+tag@example.co.kr']

External links

Exercise

오늘 본인 일에서 데이터 모양 하나 골라 (SKU 번호, 내부 ID, 우편번호, 라이선스 키). 검증하는 순수 클래스 패턴 작성. 고정 카운트엔 {n}. known-good 셋, known-bad 셋 입력 테스트.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.