정규식 테스터
매치와 그룹을 실시간 하이라이트로 정규식 테스트
로컬 실행
loading…
이 도구에 대해
패턴을 작성하고 샘플 텍스트를 붙여넣으면 입력과 동시에 모든 매치가 하이라이트됩니다. 캡처 그룹, 이름 있는 그룹, 매치 위치가 아래에 나열됩니다. 테스터는 JavaScript RegExp 엔진을 사용하므로, 후방 탐색(lookbehind), 이름 있는 그룹, Unicode 속성 이스케이프를 포함해 Node.js와 브라우저가 하는 동작과 정확히 일치합니다.
플래그는 글자별로 토글하며(g, i, m, s, u, y, d), 패턴은 키를 누를 때마다 컴파일됩니다. 문법 오류는 버튼을 누른 뒤가 아니라 엔진 자체의 메시지와 함께 즉시 표시됩니다. a* 같은 빈 매치 패턴도 안전하게 처리되며, 폭주하는 입력은 10,000개 매치로 제한되어 엉뚱한 .* 하나가 탭을 멈추게 하지 못합니다.
정규식 방언은 엔진마다 다릅니다. 여기서 동작하는 패턴이라도 PCRE, RE2, Python의 re 모듈에서는 조정이 필요할 수 있으며, 주로 후방 탐색 지원, 소유 수량자, 인라인 플래그 차이 때문입니다.
자주 묻는 질문
- 이 테스터는 어떤 정규식 방언을 사용하나요?
- 여러분의 브라우저가 구현한 ECMAScript(JavaScript)입니다. 전방/후방 탐색, 이름 있는 캡처 그룹, 역참조, 그리고 \p{Letter} 같은 Unicode 속성 이스케이프(u 플래그 필요)를 지원합니다. 소유 수량자나 재귀 같은 PCRE 전용 문법은 지원하지 않습니다.
- 왜 제 패턴이 전부 매치되거나 / 아무것도 매치되지 않나요?
- 고전적인 원인 두 가지입니다. 이스케이프하지 않은 메타문자(. 은 아무 문자나 매치합니다. 리터럴 점을 원하면 \. 으로 이스케이프하세요), 그리고 머릿속에서 빠뜨린 g 플래그입니다. 이 테스터는 항상 모든 매치를 찾지만, 여러분의 코드는 g를 설정하지 않으면 첫 번째만 찾습니다.
- 이름 있는 캡처 그룹이란 무엇인가요?
- (?<name>...) 문법은 그룹에 이름을 붙여 위치가 아닌 이름으로 매치를 읽을 수 있게 합니다. JavaScript에서는 match.groups.name입니다. 매치 목록 아래의 그룹 패널은 각 매치의 번호 캡처와 이름 캡처를 모두 보여줍니다.
- 여기서 만든 정규식을 Python이나 Go에서 그대로 쓸 수 있나요?
- 자주 되지만 항상은 아닙니다. 문자 클래스, 수량자, 앵커는 이식 가능합니다. 후방 탐색, 이름 있는 그룹 문법(Python은 (?P<name>...) 사용), 인라인 플래그는 다릅니다. Go의 RE2 엔진은 여기에 더해 역참조와 전후방 탐색을 아예 거부합니다.