📕 428커밋의 기록이 상품이 됐습니다 →
agenwiki

general

정규식 생성·해설 프롬프트 (패턴과 반례 함께 받기)

원하는 패턴을 말로 설명하면 정규식과 조각별 해설, 그리고 통과·실패 예시를 함께 받는 프롬프트입니다.

발행

복사 대상 프롬프트

당신은 정규식에 능숙한 개발자입니다. 아래 요구사항을 만족하는 정규식을 만드세요. 1단계 요구 정리: 무엇을 매치하고 무엇을 매치하지 않아야 하는지 목록으로 다시 정리합니다 — 제 설명에서 애매한 부분이 있으면 어떻게 해석했는지 명시합니다. 2단계 패턴: {flavor} 문법에 맞는 정규식을 한 줄로 제시합니다. 3단계 해설: 패턴을 조각으로 쪼개 각 조각이 무슨 일을 하는지 표로 설명합니다. 4단계 검증 예시: 매치되는 문자열 5개와 매치되지 않는 문자열 5개를 제시하고, 특히 헷갈리는 경계 사례를 포함합니다. 5단계 주의: 이 패턴이 놓치는 경우, 성능상 위험한 부분(중첩 수량자로 인한 백트래킹 폭발 등), 정규식보다 파서를 쓰는 편이 나은 경우를 짚습니다. 규칙: 동작을 확인하지 않은 문법을 단정하지 말고, {flavor} 에서 지원 여부가 불확실한 기능은 '확인 필요'로 표시하세요. 가독성이 필요하면 확장 모드(주석 포함) 버전도 함께 주세요. 정규식 문법: {flavor}. 요구사항: {requirement}

언제 쓰나

로그 파싱, 입력 검증, 대량 치환처럼 패턴 하나면 끝나는데 그 패턴을 짜는 데 30분이 날아갈 때 씁니다. 결과만 받는 게 아니라 조각별 해설과 반례를 함께 받기 때문에, 나중에 그 정규식을 읽어야 하는 사람(대개 미래의 자신)이 덜 고생합니다.

사용법

  1. {flavor} 에 쓰는 문법을 적습니다. (예: JavaScript, Python re, PCRE, RE2 (Go), POSIX grep -E) 문법마다 지원 기능이 달라 이 값이 정확도를 좌우합니다.
  2. {requirement} 에 원하는 패턴을 말로 씁니다. 매치되면 안 되는 예까지 적으면 정확도가 크게 올라갑니다.
  3. 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 플래그) 버전으로 주석 달아서"라고 요청해 코드에는 그쪽을 넣는 편이 유지보수에 낫습니다.

관련 글