정규식 다중 치환을 안전하게 하는 법
한두 개의 정규식 치환은 어느 에디터에서나 가능하지만, "공백을 한 칸으로 줄이고 → 따옴표를 통일하고 → 코드 블록 안에서만 키워드를 강조" 같은 작업처럼 정규식이 줄줄이 늘어나는 경우 패턴 사이 충돌이나 의도치 않은 연쇄 적용 때문에 결과가 망가지곤 합니다. 이 도구는 최대 20개의 (패턴, 치환) 쌍을 순서대로 적용하면서, 각 단계의 결과와 매치된 부분을 노란색으로 강조해 보여 줍니다. 이전 단계에서 만들어진 결과 문자열이 다음 단계의 정규식과 매치되는지 곧바로 확인할 수 있어, "n번째 패턴이 (n-1)번째 결과의 의도치 않은 부분을 다시 잡지 않는지" 검증하기 좋습니다.
각 패턴은 JavaScript의 RegExp 문법을 그대로 사용합니다. 캡처 그룹은 치환 문자열에서 $1, $2, $&(전체 매치), $`(왼쪽), $'(오른쪽) 등을 활용할 수 있고, 위 옵션 체크박스로 g/i/m/s 플래그를 일괄 조정합니다. 패턴이 잘못 작성되어 컴파일에 실패하면 해당 단계만 건너뛰고 빨간색 경고로 표시합니다.
패턴 작성 팁
1) 가장 좁은 패턴을 먼저, 가장 넓은 패턴을 나중에 적용하세요. 그래야 좁은 매치가 넓은 매치에 가려지지 않습니다. 2) 치환 문자열에 $ 자체를 넣고 싶으면 $$로 이스케이프합니다. 3) 백레퍼런스 충돌(예: $10이 10번째 그룹인지 1번 그룹 + 문자열 "0"인지)이 모호하다면 ${1}0처럼 중괄호로 명시할 수 있습니다.
자주 묻는 질문 (FAQ)
Q. 입력이 매우 길어도 동작하나요?
A. 모든 처리는 브라우저 안에서 이뤄지며 서버로 전송되지 않습니다. 대용량 파일도 안전하지만, 탐욕적(.*) 패턴은 백트래킹 폭주를 일으킬 수 있으니 가능하면 비탐욕(.*?)이나 부정 문자 클래스([^"]*)를 사용하세요.
Q. PCRE/Python re 와 다른 점이 있나요?
A. lookbehind는 모던 브라우저에서 지원되지만, \\K, 명명 그룹 \\g{name} 같은 일부 PCRE 전용 문법은 동작하지 않습니다. JavaScript의 정규식 명세를 기준으로 작성하세요.
Q. 결과를 파일로 받을 수 있나요?
A. 네, "파일로 저장" 버튼으로 .txt 파일로 다운로드할 수 있고, "결과 복사"로 클립보드에 바로 담을 수도 있습니다.