CalKit

정규식 테스터

정규표현식을 테스트하고 매칭 결과를 확인합니다.

개요

정규 표현식(Regular Expression)을 실시간으로 테스트하고 매칭 결과를 확인하는 도구입니다. 패턴 작성, 디버깅, 학습에 유용합니다.

계산 공식

정규식 엔진 동작: NFA(비결정적 유한 오토마타) 기반 백트래킹 또는 DFA(결정적 유한 오토마타) 방식으로 패턴을 매칭합니다. 입력 문자열의 각 위치에서 패턴의 시작점부터 매칭을 시도하며, 메타 문자(., *, +, ?, [], (), |, ^, $, \d, \w 등)를 해석합니다. 플래그(g: 전역, i: 대소문자 무시, m: 멀티라인, s: dotAll)에 따라 매칭 동작이 변경됩니다.

사용 방법

  1. 1정규식 패턴을 입력합니다.
  2. 2테스트할 문자열을 입력합니다.
  3. 3플래그(g, i, m, s 등)를 설정합니다.
  4. 4매칭 결과가 하이라이트되어 표시됩니다.
  5. 5캡처 그룹 정보를 확인합니다.

활용 팁

  • 탐욕적(greedy) 매칭(*)과 게으른(lazy) 매칭(*?)의 차이를 이해하세요.
  • 이메일 검증 등 복잡한 패턴은 잘 알려진 정규식을 참고하세요.
  • \d는 [0-9], \w는 [a-zA-Z0-9_], \s는 공백 문자를 의미합니다.
  • 룩어헤드(?=...)와 룩비하인드(?<=...)를 사용하면 매칭 없이 조건을 확인할 수 있습니다.
  • 복잡한 정규식은 명명된 캡처 그룹 (?<name>...)을 사용하면 가독성이 높아집니다.

자주 묻는 질문

Q. 정규식의 g 플래그와 없는 경우의 차이는 무엇인가요?

g(global) 플래그가 없으면 첫 번째 매칭만 반환합니다. g 플래그를 사용하면 문자열 전체에서 모든 매칭을 찾습니다. JavaScript에서는 matchAll()을 사용하여 모든 매칭과 캡처 그룹을 가져올 수 있습니다.

Q. 정규식 성능이 느려지는 경우는 어떤 경우인가요?

중첩된 수량자(예: (a+)+)나 겹치는 대안(alternation)은 '재앙적 백트래킹(catastrophic backtracking)'을 일으킬 수 있습니다. 원자적 그룹(atomic group)이나 소유적 수량자(possessive quantifier)로 해결할 수 있습니다.

Q. 언어마다 정규식이 다른가요?

기본 문법은 유사하지만, 룩비하인드 지원 여부, 유니코드 처리, 플래그 등에서 차이가 있습니다. JavaScript, Python, Java, Go 등 각 언어의 정규식 엔진 문서를 확인하는 것이 좋습니다.

관련 계산기