정규식(Regex) 기초와 자주 쓰는 패턴
정규식 메타문자(. * + ? ^ $ [] () \d \w \s)와 g·i·m 플래그, 그리디 vs 게으른 매칭을 예제와 함께 정리했습니다. 정규식 테스터로 패턴을 바로 검증해 보세요.
로그에서 숫자만 뽑거나, 입력값 형식을 검증하거나, 특정 패턴을 한 번에 치환할 때 정규식만큼 강력한 도구는 없습니다. 처음엔 기호가 낯설지만 핵심 메타문자 몇 개만 익히면 금세 쓸 수 있습니다. 정규식의 기초 문법과 자주 쓰는 패턴을 정리하고 정규식 테스터로 직접 검증하는 방법을 알아봅니다.
한눈에 보기
- 정규식은 문자열의 패턴을 표현하는 표기법입니다.
- 메타문자:
.임의 한 문자,*0회 이상,+1회 이상,?0~1회,^/$시작/끝,[]문자 집합,()그룹. - 문자 클래스:
\d숫자,\w단어문자,\s공백. - 플래그:
g전역,i대소문자 무시,m여러 줄. - 그리디(최대 매칭)와 게으른(
*?, 최소 매칭)의 차이를 이해하세요. 정규식 테스터로 바로 확인할 수 있습니다.
핵심 메타문자
정규식의 기본은 특별한 의미를 가진 문자, 즉 메타문자입니다.
| 기호 | 의미 |
|---|---|
. | 임의의 한 문자 |
* | 앞 패턴이 0회 이상 반복 |
+ | 앞 패턴이 1회 이상 반복 |
? | 앞 패턴이 0~1회 (있어도 되고 없어도 됨) |
^ | 문자열(또는 줄)의 시작 |
$ | 문자열(또는 줄)의 끝 |
[] | 문자 집합 (예: [abc] 는 a, b, c 중 하나) |
() | 그룹으로 묶기 |
예를 들어 a.c 는 가운데에 어떤 한 문자가 와도 매칭되므로 abc, axc 모두 잡힙니다. ^Hello 는 Hello 로 시작하는 줄을, end$ 는 end 로 끝나는 줄을 의미합니다.
문자 클래스
자주 쓰는 문자 묶음에는 짧은 표기가 준비되어 있습니다.
| 표기 | 의미 |
|---|---|
\d | 숫자(digit) 한 글자 |
\w | 단어문자(영문자·숫자·밑줄) 한 글자 |
\s | 공백 문자(스페이스·탭·줄바꿈) 한 글자 |
이들을 반복 기호와 조합하면 강력해집니다. \d+ 는 숫자 한 자리 이상, \s+ 는 공백 한 칸 이상을 뜻합니다.
플래그
같은 패턴이라도 플래그에 따라 동작이 달라집니다.
g(전역): 첫 매칭에서 멈추지 않고 모든 매칭을 찾습니다.i(대소문자 무시):A와a를 구분하지 않습니다.m(여러 줄):^와$가 전체 문자열이 아니라 각 줄의 시작·끝에 매칭됩니다.
그리디 vs 게으른 매칭
* 나 + 는 기본적으로 그리디(greedy), 즉 가능한 한 길게 매칭하려 합니다. 반대로 뒤에 ? 를 붙인 *?, +? 는 게으른(lazy) 매칭으로 가능한 한 짧게 잡습니다.
예를 들어 <a><b> 라는 문자열에서 <.*> 는 그리디라 전체 <a><b> 를 한 번에 잡지만, <.*?> 는 게으르게 동작해 <a> 만 잡습니다. 이 차이는 HTML 태그나 따옴표 안 내용을 다룰 때 특히 중요합니다.
자주 쓰는 패턴 예시
| 목적 | 패턴 | 설명 |
|---|---|---|
| 숫자 추출 | \d+ | 한 자리 이상의 숫자 묶음 |
| 공백으로 분리 | \s+ | 연속된 공백을 한 덩어리로 |
| 단어문자만 | \w+ | 영문자·숫자·밑줄의 연속 |
이런 패턴은 정규식 테스터에 샘플 텍스트와 함께 넣어 보면 어떤 부분이 매칭되는지 한눈에 볼 수 있습니다.
자주 묻는 질문
* 와 + 의 차이는 무엇인가요?
* 는 0회 이상이라 아예 없어도 매칭되고, + 는 1회 이상이라 최소 한 번은 나와야 매칭됩니다.
대소문자를 구분하지 않으려면?
i 플래그를 사용하면 됩니다. 예를 들어 hello 에 i 를 적용하면 Hello, HELLO 도 매칭됩니다.
왜 패턴이 예상보다 길게 잡히나요?
*·+ 가 기본적으로 그리디라 최대한 길게 매칭하기 때문입니다. 짧게 잡고 싶다면 *?·+? 같은 게으른 형태를 쓰세요.
숫자만 뽑아내려면 어떤 패턴을 쓰나요?
\d+ 를 전역 플래그 g 와 함께 사용하면 문자열 속 모든 숫자 묶음을 추출할 수 있습니다.
마무리
정규식은 메타문자, 문자 클래스, 플래그, 그리고 그리디·게으른 매칭이라는 몇 가지 개념만 잡으면 빠르게 익숙해집니다. \d+, \s+ 같은 기본 패턴부터 손에 익히는 것이 좋습니다. 패턴을 만들었다면 정규식 테스터에 텍스트를 넣어 의도대로 매칭되는지 꼭 확인해 보세요.
🧰 관련 도구
관련 글
Base64 인코딩이란? 원리와 사용 사례
Base64가 바이너리를 64개 ASCII 문자로 표현하는 원리, 33% 크기 증가, data URI·이메일 첨부 같은 용도와 보안 오해까지 정리했습니다. 인코더로 바로 변환해 보세요.
해시 함수(SHA-256)란? 용도와 특징
SHA-256 해시 함수의 단방향성, 쇄도 효과, 256비트 출력 같은 특징과 파일 무결성·비밀번호 저장·블록체인 용도를 정리했습니다. 해시 생성기로 바로 만들어 보세요.
UUID란? v4 생성과 활용
128비트 고유 식별자 UUID의 구조와 버전 4(v4)의 랜덤 생성 원리, DB 기본키·분산 시스템·요청 추적 같은 용도와 ULID 대안까지 정리했습니다. 생성기로 바로 만들어 보세요.