정규표현식 테스터

정규표현식(Regular Expression)을 실시간으로 테스트하고 매칭 결과를 확인합니다. 패턴 매칭, 그룹 캡처, 문자열 치환 기능을 제공합니다.

/ /
g

g: 전체 매칭, i: 대소문자 무시, m: 멀티라인, s: .이 줄바꿈 포함, u: 유니코드

매칭 결과

0 matches

매칭된 결과가 없습니다.

매칭된 패턴을 다른 문자열로 치환합니다.

자주 사용하는 패턴

정규표현식 치트시트

문자 클래스

. - 모든 문자 (줄바꿈 제외)
\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 등 자주 사용하는 패턴 템플릿도 함께 제공합니다.

이용 가이드

  1. 패턴 입력란에 정규표현식을 입력합니다 (슬래시 없이 패턴만).
  2. 필요한 플래그를 선택합니다: g(전체 검색), i(대소문자 무시), m(멀티라인) 등.
  3. 테스트 문자열 영역에 검사할 텍스트를 입력하거나 붙여넣습니다.
  4. 매칭 결과가 실시간으로 하이라이트되며, 매칭 수와 캡처 그룹도 표시됩니다.
  5. 치환 모드를 활성화하면 매칭된 부분을 원하는 문자열로 바꿔볼 수 있습니다.
  6. 자주 사용하는 패턴 목록에서 원하는 패턴을 클릭하면 바로 적용됩니다.

핵심 기능

  • 실시간 매칭: 패턴을 입력하는 즉시 테스트 문자열에서 매칭 결과가 하이라이트됩니다.
  • 플래그 선택: 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)을 유발할 수 있습니다.
  • 모든 테스트는 브라우저에서 로컬로 실행되며, 입력한 데이터는 외부로 전송되지 않습니다.