핵심 요약
정규식은 "문자 종류(\d, \w) + 개수(+, *, {2,4}) + 위치(^, $)"의 조합이다. 이 세 축만 이해하면 대부분의 패턴을 읽고 쓸 수 있다. 통째로 외우지 말고 조각으로 조립하자.
1. 문자 클래스 (무엇을)
| 패턴 | 의미 |
|---|---|
. | 아무 문자 하나(줄바꿈 제외) |
\d / \D | 숫자 / 숫자 아님 |
\w / \W | 단어문자(영숫자_) / 아님 |
\s / \S | 공백 / 공백 아님 |
[abc] / [^abc] | a·b·c 중 하나 / 아닌 것 |
2. 수량자 (몇 개)
| 패턴 | 의미 |
|---|---|
* | 0개 이상 |
+ | 1개 이상 |
? | 0개 또는 1개(선택) |
{2,4} | 2~4개 |
3. 앵커와 그룹 (어디서)
^시작,$끝,\b단어 경계( )그룹·캡처,(?: )캡처 안 하는 그룹,|또는
4. 바로 쓰는 실전 패턴 10
1. 숫자만 ^\d+$
2. 영문 소문자만 ^[a-z]+$
3. 공백 제거 대상 ^\s+|\s+$
4. 한글 포함 [가-힣]
5. 전화(하이픈) ^\d{2,3}-\d{3,4}-\d{4}$
6. 날짜 YYYY-MM-DD ^\d{4}-\d{2}-\d{2}$
7. 16진 색상 ^#[0-9a-fA-F]{6}$
8. 태그 제거 <[^>]+>
9. 연속 공백 1칸으로 \s{2,}
10. 파일 확장자 \.(jpg|png|gif)$
5. 초보가 자주 틀리는 것
.·*·+·?등은 특수문자다. 문자 그대로 쓰려면\.처럼 이스케이프.*는 탐욕적이라 최대한 많이 먹는다 — 최소 매칭은.*?- 정규식은 검증 도구(regex101 등)에서 실시간으로 확인하며 만들자
자주 묻는 질문
정규식을 외워야 하나요?
아니요. 문자 클래스·수량자·앵커 세 축만 이해하면 나머지는 조합입니다. 자주 쓰는 5~6개만 손에 익히고, 복잡한 건 regex101 같은 도구로 만들어 검증하세요.
탐욕(greedy)과 게으름(lazy)이 뭔가요?
.*는 가능한 한 길게 매칭(탐욕), .*?는 가능한 한 짧게 매칭(게으름)합니다. HTML 태그 하나만 잡고 싶은데 <.*>가 줄 전체를 먹는다면 <.*?>로 바꾸세요.
정규식으로 HTML을 파싱해도 되나요?
간단한 추출은 되지만 중첩 구조가 있는 진짜 파싱은 정규식으로 하면 안 됩니다. 전용 파서(DOMParser 등)를 쓰세요. 정규식은 "형식이 고정된 짧은 문자열" 검증·추출에 적합합니다.

댓글 0