본문 바로가기

정규식 치환 방법 완벽 가이드 - 일괄 변경부터 캡처 그룹까지

수백 줄 텍스트를 한 번에 바꾸는 정규식 치환 방법을 기초 문법부터 캡처 그룹, 도구별 사용법까지 실전 예제로 정리했습니다.


정규식 치환 방법 완벽 가이드 - 일괄 변경부터 캡처 그룹까지

수백 줄짜리 로그 파일에서 날짜 형식을 전부 바꿔야 할 때, 혹은 코드 안에 흩어진 변수 이름을 일괄로 정리해야 할 때가 있습니다. 이걸 하나씩 손으로 고치다 보면 시간도 오래 걸리고 실수도 생깁니다. 정규식 치환을 알면 이런 작업을 단 한 번의 명령으로 끝낼 수 있습니다.

정규식 치환은 단순히 "찾아서 바꾸기"가 아닙니다. 패턴을 정의하고, 그 패턴에 맞는 부분만 골라서, 원하는 형태로 변형하는 작업입니다. 처음에는 기호가 복잡해 보이지만 핵심 규칙 몇 개만 익히면 됩니다.

정규식 치환이 필요한 순간

일반적인 찾기-바꾸기로 충분한 경우라면 굳이 정규식을 쓸 필요가 없습니다. 하지만 다음과 같은 상황에서는 정규식이 거의 유일한 해법입니다.

  • 가변 패턴 처리: "2026-06-10", "2025-12-31"처럼 형식은 같지만 값이 다른 텍스트를 한 번에 잡을 때
  • 일부만 추출해 재배치: 이름과 전화번호 순서를 통째로 바꾸거나, 특정 부분만 남기고 삭제할 때
  • 공백, 줄바꿈, 특수문자 정리: 연속된 공백을 하나로 줄이거나 빈 줄을 제거할 때
정규식 치환의 핵심은 "무엇을 바꿀지"가 아니라 "어떤 규칙에 맞는 것을 바꿀지"를 정의하는 것입니다. 이 관점 전환이 익숙해지면 작업 속도가 크게 달라집니다.

정규식 치환 기본 문법

치환은 두 부분으로 나뉩니다. 찾을 패턴(검색식)과 바꿀 내용(치환식)입니다. 먼저 검색식에서 자주 쓰는 메타문자를 정리했습니다.

기호의미예시
.임의의 한 문자a.c 는 abc, a1c 매칭
\d숫자 한 자리\d\d 는 42, 07 매칭
\s공백 문자띄어쓰기, 탭, 줄바꿈
+1회 이상 반복a+ 는 a, aaa 매칭
*0회 이상 반복ab* 는 a, abbb 매칭
[]문자 집합[abc] 는 a 또는 b 또는 c

예를 들어 연속된 공백 여러 개를 공백 하나로 줄이고 싶다면 검색식에 \s+를 넣고 치환식에 공백 한 칸을 넣으면 됩니다. 빈 줄을 모두 제거하려면 ^\s*$ 패턴을 빈 문자열로 치환합니다.

참고: 점(.)이나 물음표(?)처럼 메타문자 자체를 글자로 찾고 싶을 때는 앞에 백슬래시를 붙여 \. \? 처럼 이스케이프해야 합니다. 이걸 빼먹으면 엉뚱한 부분까지 매칭됩니다.

캡처 그룹으로 순서 바꾸기

정규식 치환의 진짜 위력은 캡처 그룹에서 나옵니다. 검색식에서 소괄호 ()로 묶은 부분은 따로 저장되고, 치환식에서 $1, $2(도구에 따라 \1, \2) 형태로 다시 꺼내 쓸 수 있습니다.

이름 순서 뒤집기

"홍길동, 김철수"처럼 "성이름" 형태를 "이름 성"으로 바꾸는 예를 보겠습니다.

  • 검색식: (\S)(\S+)
  • 치환식: $2 $1

첫 글자를 1번 그룹, 나머지를 2번 그룹으로 잡은 뒤 순서를 바꿔 출력하는 방식입니다.

날짜 형식 변환

"2026-06-10"을 "2026년 06월 10일"로 바꾸려면 검색식 (\d{4})-(\d{2})-(\d{2})에 치환식 $1년 $2월 $3일을 넣습니다. 파일에 날짜가 수천 개 있어도 한 번에 처리됩니다.

팁: 치환 작업 전에 더미 텍스트로 패턴을 먼저 검증해 보는 습관이 안전합니다. 실제 데이터 대신 Lorem Ipsum 생성기로 만든 샘플 문단에 패턴을 적용해 보면, 의도하지 않은 부분이 바뀌는지 미리 확인할 수 있습니다.

도구별 정규식 치환 방법

같은 정규식이라도 도구마다 문법과 사용 위치가 조금씩 다릅니다. 자주 쓰는 환경을 정리했습니다.

VS Code

찾기 창(Ctrl+H 또는 Cmd+H)을 연 뒤 정규식 아이콘(.* 모양)을 클릭해 활성화합니다. 치환식에서 캡처 그룹은 $1 형식을 씁니다. 폴더 전체에 적용하려면 검색 패널의 바꾸기 기능을 사용하면 됩니다.

sed (리눅스, 맥 터미널)

명령은 sed -E 's/패턴/치환/g' 형태입니다. -E 옵션을 붙여야 + 나 () 같은 확장 정규식을 백슬래시 없이 쓸 수 있습니다. 캡처 그룹은 \1 형식입니다. 끝의 g는 한 줄에서 여러 번 나와도 전부 바꾸라는 의미입니다.

JavaScript

문자열의 replace 메서드에 정규식과 플래그를 넘깁니다. 예: text.replace(/(\d{4})-(\d{2})/g, '$1.$2'). g 플래그가 없으면 첫 번째 매칭만 바뀌니 주의해야 합니다. 인코딩된 데이터를 다룰 때는 치환 전후로 Base64 인코더 같은 도구로 값을 디코딩해 원본 형태로 확인한 뒤 패턴을 짜면 실수를 줄일 수 있습니다.

자주 하는 실수와 해결법

정규식 치환에서 사고가 나는 원인은 대부분 비슷합니다. 미리 알아두면 피할 수 있습니다.

  • 탐욕적 매칭: .* 는 가능한 한 길게 잡습니다. 따옴표 안 내용만 바꾸려다 줄 전체가 잡히는 경우가 흔합니다. 최소 매칭이 필요하면 .*? 처럼 물음표를 붙입니다.
  • 이스케이프 누락: 마침표, 괄호, 슬래시를 글자로 찾을 때 백슬래시를 빼면 매칭 범위가 엉킵니다.
  • 전역 플래그 누락: 첫 매칭만 바뀌고 나머지가 그대로 남는 문제는 g 옵션을 빠뜨려서 생깁니다.

가장 안전한 방법은 치환 전 검색만 먼저 실행해서 몇 개가 매칭되는지 확인하는 것입니다. VS Code는 매칭 개수를 즉시 보여주고, sed는 -n 옵션과 p 명령으로 미리보기를 할 수 있습니다.

정규식 치환은 한 번 익혀두면 반복 작업 시간을 크게 줄여 줍니다. 지금 자주 하는 텍스트 정리 작업 하나를 골라, 그 패턴을 정규식으로 만들어 보세요. 그리고 실제 적용 전에는 반드시 검색 모드로 매칭 결과를 먼저 확인하는 습관을 들이시기 바랍니다.

3일 무료체험큰손탐지기, 지금 바로 시작하세요

설치 없이 웹에서 바로 사용 가능 · PC & 모바일 지원

무료체험 시작
카카오톡 상담