정규식 치환 방법 완벽 가이드 - 일괄 변경부터 캡처 그룹까지
수백 줄 텍스트를 한 번에 바꾸는 정규식 치환 방법을 기초 문법부터 캡처 그룹, 도구별 사용법까지 실전 예제로 정리했습니다.
![]()
수백 줄짜리 로그 파일에서 날짜 형식을 전부 바꿔야 할 때, 혹은 코드 안에 흩어진 변수 이름을 일괄로 정리해야 할 때가 있습니다. 이걸 하나씩 손으로 고치다 보면 시간도 오래 걸리고 실수도 생깁니다. 정규식 치환을 알면 이런 작업을 단 한 번의 명령으로 끝낼 수 있습니다.
정규식 치환은 단순히 "찾아서 바꾸기"가 아닙니다. 패턴을 정의하고, 그 패턴에 맞는 부분만 골라서, 원하는 형태로 변형하는 작업입니다. 처음에는 기호가 복잡해 보이지만 핵심 규칙 몇 개만 익히면 됩니다.
정규식 치환이 필요한 순간
일반적인 찾기-바꾸기로 충분한 경우라면 굳이 정규식을 쓸 필요가 없습니다. 하지만 다음과 같은 상황에서는 정규식이 거의 유일한 해법입니다.
- 가변 패턴 처리: "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일을 넣습니다. 파일에 날짜가 수천 개 있어도 한 번에 처리됩니다.
도구별 정규식 치환 방법
같은 정규식이라도 도구마다 문법과 사용 위치가 조금씩 다릅니다. 자주 쓰는 환경을 정리했습니다.
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 명령으로 미리보기를 할 수 있습니다.
정규식 치환은 한 번 익혀두면 반복 작업 시간을 크게 줄여 줍니다. 지금 자주 하는 텍스트 정리 작업 하나를 골라, 그 패턴을 정규식으로 만들어 보세요. 그리고 실제 적용 전에는 반드시 검색 모드로 매칭 결과를 먼저 확인하는 습관을 들이시기 바랍니다.