왜 텍스트 모양 전용 작은 언어가 필요했을까
4GB짜리 로그 파일에서 IP 주소 뒤에 5xx HTTP 상태가 붙은 줄을 모두 찾아야 한다고 해 봐. Python 스크립트로 짜면 줄을 나누고, 세 번째 열을 읽고, IP인지 확인하고, 상태가 5로 시작하는지도 검사해야 해. 코드 스무 줄을 쓰고 열 번호가 맞는지 디버깅하다가 30분이 날아가지.
정규식이라면 \b\d+\.\d+\.\d+\.\d+\b.*\b5\d{2}\b 한 줄을 ripgrep으로 돌리면 돼. 한 줄이고, 실행은 0.5초면 끝나.
정규식이 존재하는 이유가 바로 이 차이야. 질문이 "어느 문자열이 이 패턴과 맞지?"라면 손으로 파싱하는 건 지나치게 큰 도구를 쓰는 셈이거든. 정규식은 텍스트 모양만 묘사하는 작은 패턴 문법이야.
정규식이 진짜 잘하는 세 가지
검색. "이 더미에서 특정 모양인 것을 모두 찾아." 에디터, IDE, 로그 분석기, 보안 스캐너가 이 일을 해.
유효성 검증. "이 문자열 전체가 원하는 모양과 맞아?" 폼 필드, 설정 파서, 라우트 매칭에서 써.
추출과 치환. "이 문자열에서 원하는 부분만 빼줘" 또는 "이 모양을 전부 저 모양으로 바꿔줘." 데이터 정제, 코드 일괄 변환, 빌드 스크립트에 잘 맞아.
반대로 중첩 구조 파싱, 의미 추적, HTML이나 JSON 전체 해석은 이 목록에 없어. 트랙 끝에서 이 한계를 다시 짚어줄게.