언제 쓰나
로그 파싱, 입력 검증, 대량 치환처럼 패턴 하나면 끝나는데 그 패턴을 짜는 데 30분이 날아갈 때 씁니다. 결과만 받는 게 아니라 조각별 해설과 반례를 함께 받기 때문에, 나중에 그 정규식을 읽어야 하는 사람(대개 미래의 자신)이 덜 고생합니다.
사용법
{flavor}에 쓰는 문법을 적습니다. (예:JavaScript,Python re,PCRE,RE2 (Go),POSIX grep -E) 문법마다 지원 기능이 달라 이 값이 정확도를 좌우합니다.{requirement}에 원하는 패턴을 말로 씁니다. 매치되면 안 되는 예까지 적으면 정확도가 크게 올라갑니다.- 4단계 검증 예시를 실제로 돌려 보고, 어긋나는 케이스가 있으면 그 문자열을 그대로 붙여 "이건 매치되면 안 된다"라고 알려 주면 패턴이 교정됩니다.
사용 예시
입력
정규식 문법: JavaScript
요구사항: 로그 한 줄에서 ISO 8601 타임스탬프와 로그 레벨을 뽑고 싶습니다.
형식 예: 2026-08-02T03:14:07Z ERROR 메시지
레벨은 DEBUG/INFO/WARN/ERROR 만 인정합니다. 소문자 레벨은 매치하지 않습니다.
출력 (요약)
패턴
/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z)\s+(DEBUG|INFO|WARN|ERROR)\b/
해설
^ 줄 시작
(\d{4}-...Z) 그룹 1 — 타임스탬프 전체
\s+ 공백 하나 이상
(DEBUG|INFO|...) 그룹 2 — 허용된 레벨만
\b ERRORS 같은 접두 일치 방지
매치됨: 2026-08-02T03:14:07Z ERROR 결제 실패
매치 안 됨: 2026-08-02T03:14:07Z error 결제 실패 (소문자)
매치 안 됨: 2026-08-02 03:14:07 INFO ... (T 구분자 없음)
주의: 밀리초(.123)나 +09:00 오프셋 형식은 이 패턴이 잡지 못합니다. 필요하면 알려 주세요.
팁
- 이미 있는 정규식을 이해하고 싶을 때는
{requirement}에 패턴을 그대로 넣고 "이 정규식을 해설해 줘"라고 쓰면 3단계 표만 받을 수 있습니다. - 대상 문자열이 HTML이나 중첩 구조라면 5단계 주의를 꼭 읽으세요. 정규식으로 풀면 안 되는 문제일 때가 많습니다.
- 패턴이 길어지면 "확장 모드(x 플래그) 버전으로 주석 달아서"라고 요청해 코드에는 그쪽을 넣는 편이 유지보수에 낫습니다.