본문 바로가기
C.W.K.
Stream
Lesson 10 of 10 · published

정규식의 황금 규칙

~8 min · principle, philosophy

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

원칙 하나로 트랙 닫기

정규식은 패턴 문제를 푸는 가장 작은 도구야. 질문이 패턴에 관한 것일 때 쓰고, 구조에 관한 질문으로 바뀌는 순간 파서를 꺼내.

나머지 퀘스트는 이 원칙을 구현하는 과정이야. 첫 열 강에서 세운 생각의 틀을 정리해 보자.

  1. 정규식은 텍스트의 *패턴*을 묘사해. 구조나 의미를 다루는 도구는 아니야.
  2. 이미 쓰고 있는 거의 모든 텍스트 도구 안에 살아.
  3. 패턴 대부분은 리터럴 문자야. 특수한 메타문자는 14개뿐이야.
  4. 엔진은 패턴을 상태 기계로 컴파일한 뒤 입력을 따라 이동해.
  5. 엔진 방언은 다양하지만 핵심 80%는 어디서나 통해.
  6. 패턴은 항상 테스터에서 먼저 만들어.
  7. 상세 모드와 조합을 활용해. 가독성은 영리한 묘기보다 중요해.
  8. 구조를 먼저 읽고 세부 문자는 나중에 읽어.
  9. 정규식으로 파싱을 시도하지 마. 진짜 파서를 꺼내 써.
  10. 일을 끝낼 수 있는 가장 작은 도구를 사용해.

다음에 배울 것

여기서부터는 문법을 차례로 익혀. 트랙 2의 문자 클래스, 트랙 3의 수량자, 트랙 4의 그룹과 선택, 트랙 5의 너비 0 검사, 트랙 6의 언어별 API, 트랙 7의 실전 패턴, 트랙 8의 고급 기능으로 이어져.

모든 후속 트랙은 방금 배운 원칙으로 돌아와. 막힐 때마다 이 열 가지를 다시 펼쳐봐. 문법 암기보다 오래 살아남는 기준이 될 거야.

Code

한 예시에 퀘스트 전체·python
import re

# 이 퀘스트의 핵심을 한데 쓰는 실전 예시:
# - 리터럴 문자
# - 문자 클래스
# - 수량자
# - 캡처 그룹
# - 앵커
# - 가독성을 위한 VERBOSE

ORDER_LINE = re.compile(r'''
    ^                          # 줄 시작
    (?P<date>\d{4}-\d{2}-\d{2})  # ISO 날짜
    \s+                        # 공백
    (?P<order>\#\d+-\d+)       # #42-1138 같은 주문번호
    \s+\$                      # 통화 기호
    (?P<amount>\d+\.\d{2})     # 소수 가격
    $                          # 줄 끝
''', re.VERBOSE | re.MULTILINE)

for m in ORDER_LINE.finditer(orders_text):
    print(m.groupdict())

External links

Exercise

오늘 풀어야 하는 실제 문제에 가장 단순한 정규식을 써봐. 30자 이내이고 한 문장으로 읽힌다면 더 좋아. 나머지 퀘스트에서도 이 기준으로 실력을 가늠할 거야.

Progress

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

댓글 0

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

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