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

한 룰, 트랙 끝

정규식은 모양 문제를 푸는 가장 작은 도구. 질문이 모양에 관한 것일 때 써. 질문이 구조에 관한 것이 되는 순간 파서로 손 뻗어.

이 quest 의 나머지는 다 구현이야. 이 트랙 10강은 멘탈 모델을 줬어:

  1. 정규식은 텍스트 *모양* 묘사 — 구조도, 의미도 아냐.
  2. 네가 이미 쓰는 모든 텍스트 도구에 살아.
  3. 패턴 대부분이 그냥 리터럴 글자; 14개만 특수.
  4. 엔진이 패턴을 state machine 으로 컴파일해서 입력을 걸어.
  5. flavor 가 다양; 80% 는 portable.
  6. 패턴은 항상 테스터에서 먼저 빌드.
  7. verbose 모드 또는 composition — 가독성이 영리함을 이김.
  8. 구조 먼저, 글자 둘째 순서로 읽음.
  9. 정규식으로 파싱 시도하지 마; 진짜 파서로 손 뻗어.
  10. 일 끝내는 가장 작은 도구 사용.

다음에 올 것

여기서부터 quest 는 기계적으로 가: character class (트랙 2), quantifier (트랙 3), group + alternation (트랙 4), zero-width assertion (트랙 5), 언어별 API (트랙 6), 코드에 바로 넣을 실전 패턴 (트랙 7), journey 와 senior 를 가르는 advanced 기능 (트랙 8).

모든 후속 트랙이 방금 배운 원칙으로 돌아와. 막힐 때 이 lesson 으로 와. 위 10가지 아이디어가 어떤 syntax 외움보다 오래 살아남아.

Code

한 예시에 quest 전체·python
import re

# 이 quest 의 거의 모든 걸 쓰는 실전 예시:
# - 리터럴 글자
# - character class
# - quantifier
# - 캡처 그룹
# - 앵커
# - 가독성 위한 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자 이내고 한 문장으로 읽히면 보너스. quest 나머지가 본인을 calibrate 하는 기준이 그거야.

Progress

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

댓글 0

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

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