고급 사용자를 위한

전문가 도구

복잡한 정규식 패턴 분석부터 성능 최적화까지, 전문가 수준의 도구와 기법을 제공합니다.

전문가 레벨

성능 모니터

실행 시간과 메모리 사용량 측정

실행 시간
-
백트랙 횟수
-
복잡도
-

패턴 디버거

단계별 매칭 과정을 시각화

패턴을 입력하고 디버깅을 시작하세요

ReDoS 탐지기

정규식 서비스 거부 공격 패턴 탐지

안전한 패턴
위험한 패턴이 감지되지 않았습니다

고급 패턴 기법

전문가들이 사용하는 고급 정규식 기법과 최적화 방법을 알아보세요

전후방탐색 (Lookaround)

문자를 소비하지 않고 조건을 확인하는 고급 기법

긍정 전방탐색 (Positive Lookahead)
(?=.*\d)(?=.*[A-Z]).*
숫자와 대문자를 모두 포함하는 문자열 (비밀번호 검증에 유용)
부정 전방탐색 (Negative Lookahead)
\b(?!cat\b)\w+
'cat'이 아닌 모든 단어 매칭
긍정 후방탐색 (Positive Lookbehind)
(?<=\$)\d+(\.\d{2})?
달러 기호($) 뒤에 오는 가격 숫자 매칭 (예: $19.99)
부정 후방탐색 (Negative Lookbehind)
(?<!un)\w+able
'un'이 앞에 오지 않는 'able'로 끝나는 단어 (예: comfortable, 제외: unable)
복합 후방탐색
(?<=@)\w+(?=\.com)
이메일에서 @ 뒤부터 .com 앞까지의 도메인명 추출 (예: user@example.com → example)

실전 활용 예제

// 로그 파일에서 타임스탬프 다음의 메시지만 추출
                const pattern = /(?<=\[\d{2}:\d{2}:\d{2}\]\s).+/g;
                const log = "[12:34:56] Error occurred";
                // 결과: "Error occurred"

                // HTML 태그 안의 텍스트만 추출 (태그 제외)
                const pattern = /(?<=>)[^<]+(?=<)/g;
                const html = "<div>Hello World</div>";
                // 결과: "Hello World"

명명된 캡처 그룹

그룹에 의미있는 이름을 부여하여 가독성 향상

이메일 파싱
(?<username>[a-zA-Z0-9._%+-]+)@(?<domain>[a-zA-Z0-9.-]+\.(?<tld>[a-zA-Z]{2,}))
username, domain, tld로 이메일 구성요소를 분리

JavaScript 사용 예:

const match = email.match(pattern);
console.log(match.groups.username); // 사용자명
console.log(match.groups.domain);   // 도메인

원자적 그룹

백트래킹을 방지하여 성능을 최적화하는 기법

일반 그룹 (느림)
(.*)*
catastrophic backtracking 위험
원자적 그룹 (빠름)
(?>.*)
백트래킹 방지로 성능 향상

유니코드 지원

다국어 텍스트 처리를 위한 유니코드 패턴

\p{Script=Hangul}+
한글 문자 매칭
안녕하세요
\p{Emoji}
이모지 매칭
😀🎉🚀
\p{Currency_Symbol}
통화 기호
$€¥₩

모범 사례

성능과 유지보수성을 고려한 정규식 작성 가이드라인

성능 최적화

  • 비캡처링 그룹 (?:) 사용
  • 원자적 그룹으로 백트래킹 방지
  • 적절한 수량자 선택 (+, *, ?)
  • 중첩된 수량자 피하기

보안 고려사항

  • ReDoS 공격 패턴 검증
  • 입력값 길이 제한
  • 타임아웃 설정
  • 사용자 입력을 직접 정규식에 사용 금지

코드 품질

  • 명명된 그룹으로 가독성 향상
  • 정규식에 주석 추가
  • 단위 테스트 작성
  • 복잡한 패턴은 여러 단계로 분리