텍스트

Regex Tester / Find & Replace

실제 텍스트로 정규식 테스트: 하이라이트된 일치 항목과 분석된 캡처 그룹, 또는 찾은 일치 항목을 새 텍스트로 바꾸기.


                        

                        

A regular expression (regex) is a compact language for describing patterns in text — for searching, validating a format, or replacing matches. This tool highlights matches in real text as you type the pattern, breaks out capture groups, and supports a find-and-replace mode.

How to use it

Common uses

Things to keep in mind

Greedy quantifiers (*, +) grab as many characters as possible — add ? for the minimal match instead (e.g. .*? instead of .*).

Syntax varies slightly between languages — an expression that works here (a JavaScript engine) may need adjusting for PCRE, .NET, or Python.

이 도구에 대한 아티클: 정규 표현식: 기초와 탐욕적 매칭의 함정

자주 묻는 질문

어떤 정규식 엔진을 사용하나요?

브라우저의 자바스크립트 정규식 엔진을 사용합니다. PCRE 전용 문법(예: 후방탐색 조건부, 재귀 패턴 등 일부 고급 기능)은 지원되지 않을 수 있으며, g·i·m·s·u 같은 플래그와 이름 있는 캡처 그룹은 정상적으로 동작합니다.

탐욕적(greedy) 수량자와 게으른(lazy) 수량자의 차이는 무엇인가요?

*, +처럼 기본 수량자는 가능한 한 많이 일치시키는 탐욕적 방식이고, *?, +?처럼 물음표를 붙이면 가능한 한 적게 일치시키는 게으른 방식으로 동작합니다.

테스트 모드와 바꾸기 모드는 어떻게 다른가요?

테스트 모드는 패턴과 일치하는 부분을 하이라이트하고 캡처 그룹을 분석해 보여주며, 바꾸기 모드는 일치한 부분을 $1, $2 같은 그룹 참조를 포함한 문자열로 치환한 결과를 보여줍니다. 입력한 정규식과 텍스트는 브라우저 안에서만 처리됩니다.

파괴적 백트래킹이란 무엇인가요?

(a+)+ 같은 중첩된 수량자는 특정 입력 문자열에서 엔진이 지수적으로 많은 조합을 시도하게 만들 수 있습니다 — 겉보기에 단순한 표현식에서 페이지나 스크립트가 "멈춰버립니다". 이는 실제로 존재하는 취약점 종류(ReDoS)이므로, 복잡한 중첩 수량자는 길고 거의 일치하는 문자열로도 반드시 테스트해야 합니다.

왜 제 정규식이 한 프로그래밍 언어에서는 작동하는데 다른 언어에서는 작동하지 않나요?

정규식 문법은 완전히 표준화되어 있지 않습니다. PCRE(PHP를 비롯한 많은 언어), .NET, Python re, JavaScript는 특정 구문(예: 후방탐색이나 이름 있는 그룹) 지원에서 미묘한 차이가 있어, 한 엔진용으로 작성된 표현식이 다른 엔진에서 그대로 동작하지 않을 수 있습니다.

아티클: 텍스트

camelCase, snake_case, kebab-case: 언제 어떤 스타일을 쓸까

camelCase, snake_case, kebab-case가 왜 존재하며, 각각 보통 어디에 쓰이는지.

Text Diff: 텍스트 차이를 찾는 알고리즘의 작동 원리

diff 알고리즘이 텍스트 두 버전 사이의 최소 변경 집합을 찾는 방법.

줄 정렬: 알파벳순과 숫자순은 왜 다를까

알파벳순 정렬이 숫자를 텍스트처럼 다루는 이유와, 숫자 정렬과의 차이.

문자열 이스케이핑: JS, JSON, 셸, 정규식마다 규칙이 다른 이유

모든 곳에 통하는 단 하나의 이스케이핑 규칙이 없는 이유 — JS, JSON, 셸, 정규식 각각 고유한 규칙이 있다.

CRLF와 LF: 줄바꿈 문자가 여전히 문제를 일으키는 이유

CRLF와 LF 차이가 어디서 왔는지, git과 스크립트에서 왜 지금도 문제를 일으키는지.

문자 수와 단어 수 세기: 유니코드가 왜 이것을 복잡하게 만드는가

유니코드에서 시각적으로 하나의 이모지가 여러 코드 포인트로 이루어질 수 있는 이유.

Lorem Ipsum: 이 더미 텍스트는 어디서 왔고 왜 의미가 없을까

Lorem Ipsum 텍스트가 실제로 어디서 왔는지, 실제 텍스트 대신 무의미한 텍스트를 쓰는 이유.

Slugify: 제목이 유효한 URL로 바뀌는 과정

기사 제목이 하이픈으로 구분된 깔끔하고 읽기 쉬운 URL로 바뀌는 과정.

Markdown: 문서화의 표준이 된 이유

HTML과 달리 Markdown이 원본 상태에서도 읽기 쉬운 이유.

보이지 않는 공백: 겉보기에 같은 텍스트 비교가 왜 실패할까

보이지 않는 공백 하나가 겉보기에 같은 두 텍스트의 비교를 실패하게 만드는 방법.

텍스트 뒤집기: 이모지에서 왜 깨질까

단순한 텍스트 뒤집기가 여러 코드 포인트로 이루어진 이모지를 왜 깨뜨리는지.

텍스트 빈도 분석: 워드 클라우드부터 암호 해독까지

문자 빈도 분석이 역사적으로 단순 치환 암호를 해독하는 데 어떻게 도움이 되었는지.