정규표현식 테스터
정규표현식(Regular Expression)을 실시간으로 테스트하고 매칭 결과를 확인합니다. 패턴 매칭, 그룹 캡처, 문자열 치환 기능을 제공합니다.
g: 전체 매칭, i: 대소문자 무시, m: 멀티라인, s: .이 줄바꿈 포함, u: 유니코드
매칭 결과
0 matches매칭된 결과가 없습니다.
매칭된 패턴을 다른 문자열로 치환합니다.
$1, $2... 로 캡처 그룹 참조, $& 로 전체 매치 참조
자주 사용하는 패턴
정규표현식 치트시트
문자 클래스
. - 모든 문자 (줄바꿈 제외)\d - 숫자 [0-9]\D - 숫자 아님\w - 단어 문자 [a-zA-Z0-9_]\W - 단어 문자 아님\s - 공백 문자\S - 공백 아님앵커
^ - 문자열/줄 시작$ - 문자열/줄 끝\b - 단어 경계\B - 단어 경계 아님수량자
* - 0회 이상+ - 1회 이상? - 0 또는 1회{n} - 정확히 n회{n,} - n회 이상{n,m} - n~m회그룹
(abc) - 캡처 그룹(?:abc) - 비캡처 그룹(?<name>abc) - 명명된 그룹\1 - 역참조전후방탐색
(?=abc) - 긍정 전방탐색(?!abc) - 부정 전방탐색(?<=abc) - 긍정 후방탐색(?<!abc) - 부정 후방탐색특수문자
[abc] - 문자 집합[^abc] - 부정 문자 집합[a-z] - 문자 범위a|b - OR (택일)\ - 이스케이프정규표현식 테스터란?
정규표현식(Regular Expression, Regex) 테스터는 패턴 매칭을 실시간으로 테스트하고 결과를 시각적으로 확인할 수 있는 온라인 도구입니다. 텍스트 검색, 데이터 검증, 문자열 치환 등 프로그래밍과 텍스트 처리 작업에서 정규표현식은 필수 기술입니다. 이 도구는 패턴을 입력하면 즉시 매칭 결과를 하이라이트로 표시해주며, 이메일, 전화번호, URL 등 자주 사용하는 패턴 템플릿도 함께 제공합니다.
이용 가이드
- 패턴 입력란에 정규표현식을 입력합니다 (슬래시 없이 패턴만).
- 필요한 플래그를 선택합니다: g(전체 검색), i(대소문자 무시), m(멀티라인) 등.
- 테스트 문자열 영역에 검사할 텍스트를 입력하거나 붙여넣습니다.
- 매칭 결과가 실시간으로 하이라이트되며, 매칭 수와 캡처 그룹도 표시됩니다.
- 치환 모드를 활성화하면 매칭된 부분을 원하는 문자열로 바꿔볼 수 있습니다.
- 자주 사용하는 패턴 목록에서 원하는 패턴을 클릭하면 바로 적용됩니다.
핵심 기능
- 실시간 매칭: 패턴을 입력하는 즉시 테스트 문자열에서 매칭 결과가 하이라이트됩니다.
- 플래그 선택: g(전체), i(대소문자 무시), m(멀티라인), s(dotall), u(유니코드) 플래그를 개별 적용합니다.
- 캡처 그룹 표시: 괄호로 묶은 캡처 그룹의 내용을 별도로 확인할 수 있습니다.
- 치환 모드: 매칭된 텍스트를 다른 문자열로 치환하는 기능을 테스트합니다.
- 패턴 템플릿: 이메일, URL, IP 주소 등 자주 사용하는 정규표현식을 클릭 한 번으로 적용합니다.
- 문법 참고표: 주요 정규표현식 문법과 특수 문자를 빠르게 참조할 수 있습니다.
이런 상황에서 유용해요
- 폼 검증: 이메일, 전화번호, 우편번호 등 사용자 입력값의 형식을 검증하는 패턴을 테스트합니다.
- 로그 분석: 서버 로그에서 특정 패턴의 에러 메시지, IP 주소, 타임스탬프를 추출합니다.
- 데이터 클렌징: CSV나 텍스트 데이터에서 불필요한 문자를 제거하거나 형식을 통일합니다.
- 코드 리팩터링: 소스 코드에서 특정 패턴의 변수명이나 함수 호출을 일괄 수정합니다.
- 웹 스크래핑: HTML이나 JSON 응답에서 필요한 데이터를 패턴으로 추출합니다.
궁금한 점 모음
Q: g 플래그가 없으면 어떻게 되나요?
g(global) 플래그가 없으면 첫 번째 매칭만 찾고 멈춥니다. 문자열 내 모든 매칭을 찾으려면 반드시 g 플래그를 활성화하세요.
Q: 캡처 그룹($1, $2)은 어떻게 사용하나요?
괄호 ()로 묶은 부분이 캡처 그룹이 됩니다. 치환 시 $1, $2 등으로 참조할 수 있습니다. 예를 들어, (\w+)@(\w+) 패턴에서 $1은 @ 앞부분, $2는 뒷부분입니다.
Q: 특수문자를 리터럴로 검색하려면 어떻게 하나요?
정규표현식에서 특별한 의미를 가진 문자(. * + ? ^ $ [ ] { } ( ) | \)는 앞에 백슬래시(\)를 붙여 이스케이프해야 합니다. 예: 마침표를 찾으려면 \.을 사용합니다.
Q: 탐욕적 매칭과 게으른 매칭의 차이는 무엇인가요?
탐욕적 매칭(.*)은 가능한 한 많이 매칭하고, 게으른 매칭(.*?)은 가능한 한 적게 매칭합니다. HTML 태그 추출처럼 최소 범위를 잡아야 할 때는 게으른 매칭을 사용하세요.
Q: 비캡처 그룹(?:...)은 언제 사용하나요?
그룹화는 필요하지만 캡처는 불필요한 경우에 사용합니다. 예를 들어 (?:http|https)://는 프로토콜을 그룹으로 묶되 캡처하지 않아 $1 번호에 영향을 주지 않습니다.
Q: 정규표현식이 느리게 동작하는 이유는 무엇인가요?
중첩된 반복 패턴(예: (a+)+b)은 재앙적 역추적을 일으켜 성능이 급격히 저하됩니다. 패턴을 단순화하거나 원자적 그룹, 소유적 수량자를 사용하여 해결할 수 있습니다.
Q: 정규표현식은 프로그래밍 언어마다 다른가요?
기본 문법은 대부분 동일하지만, 고급 기능(전방탐색, 후방탐색, 유니코드 지원 등)은 언어마다 차이가 있습니다. 이 도구는 JavaScript 엔진의 정규표현식을 사용합니다.
Q: 입력한 데이터가 외부로 전송되나요?
아니요, 모든 정규표현식 테스트는 브라우저에서 로컬로 실행됩니다. 패턴이나 테스트 문자열이 서버로 전송되지 않으므로 민감한 데이터도 안전하게 테스트할 수 있습니다.
알아두면 좋은 점
- 복잡한 패턴은 작은 부분부터 만들어 점진적으로 확장하면 디버깅이 쉽습니다.
- 탐욕적(greedy) 매칭(.*)이 기대보다 많이 잡힐 때는 게으른(lazy) 매칭(.*?)을 시도하세요.
- 특수문자(. * + ? ^ $ [ ] { } ( ) | \)를 리터럴로 검색하려면 백슬래시로 이스케이프하세요.
- 성능에 주의하세요. 중첩된 반복(예: (a+)+)은 재앙적 역추적(catastrophic backtracking)을 유발할 수 있습니다.
- 모든 테스트는 브라우저에서 로컬로 실행되며, 입력한 데이터는 외부로 전송되지 않습니다.