멈춰야 할 신호
일부 패턴이 잘못된 전투 싸우는 중. 본인 정규식이 라인 넘은 신호:
- 패턴이 100자 넘고 자라는 중. 모양 매칭 아니라 파싱 중.
- 입력 가로질러 컨텍스트 추적 필요. "Quoted 문자열 안, X 무시" — 그건 lexer 일, 정규식 아님.
- 카운트 또는 균형 필요. 중첩 괄호, 균형 따옴표 — 정의상 비-정규.
- 재귀 필요.
(?R)가 테이블에 있으면 정규식 졸업. - 3+ 정규식 패스 chain 중. 아마 파서 원함.
- 패턴이 포매팅 변경에 fragile. 떠도는 공백 하나가 깨뜨림.
- 소리 내서 못 읽음. Production-ready 정규식이 가독해야.
대신 손 뻗을 거
중첩 구조 위한 파서:
- HTML / XML → BeautifulSoup, lxml, DOMParser
- JSON → json.loads, JSON.parse
- YAML → PyYAML, js-yaml
- 소스 코드 → AST (Python
ast, JS Babel parser) - 커스텀 DSL → 진짜 lexer/parser 작성 (PLY, Lark, nom, ANTLR)
알려진 포맷 위한 specialized 라이브러리:
- URL →
urllib.parse,new URL() - 날짜 →
datetime, dateutil, date-fns - 전화 → libphonenumber
- IP →
ipaddress, net.IP - 버전 → packaging.version, semver
재구성
옳은 도구 손 뻗기가 패배 인정 X — senior 판단. 입문자가 정규식 알고 있는 망치라서 모든 거에 손 뻗음. 경험 많은 엔지니어가 정규식이 실제 푸는 문제와 그냥 미루는 문제 구분 앎.