정규표현식(Regular Expression, RegEx)은 프로그래밍 세계의 스위스 아미 나이프라고 불립니다. 한번 익혀두면 텍스트 검색, 데이터 검증, 문자열 변환 등 모든 곳에서 활용할 수 있기 때문입니다. 하지만 처음 접하면 ^(?=.*[A-Z])(?=.*\d).{8,}$ 같은 암호문에 기겁하기 마련이죠. 오늘은 5분 만에 핵심을 잡을 수 있도록 정리해 드립니다.
기본 문법 3분 정리
| 기호 | 의미 | 예시 |
|---|---|---|
. |
아무 문자 1개 | a.c → abc, aXc |
* |
0번 이상 반복 | ab*c → ac, abc, abbc |
+ |
1번 이상 반복 | ab+c → abc, abbc (ac는 X) |
? |
0번 또는 1번 | colou?r → color, colour |
\d |
숫자 [0-9] | \d{3} → 123, 456 |
\w |
영숫자+밑줄 | \w+ → hello, test_1 |
\s |
공백 문자 | a\sb → a b |
^ |
문자열 시작 | ^Hello → Hello world |
$ |
문자열 끝 | end$ → the end |
[abc] |
a, b, c 중 하나 | [aeiou] → 모음 매칭 |
(...) |
그룹 캡처 | (\d{2})-(\d{2}) → 그룹 추출 |
실전 패턴 10가지
1. 이메일 주소
\b[\w.-]+@[\w.-]+\.\w{2,}\b
[email protected], [email protected] 매칭
2. 한국 휴대폰 번호
01[016789]-?\d{3,4}-?\d{4}
010-1234-5678, 01012345678 모두 매칭
3. 비밀번호 강도 (8자 이상, 대문자+숫자 포함)
^(?=.*[A-Z])(?=.*\d).{8,}$
Password1 매칭, password 불일치
4. URL 추출
https?://[\w\-._~:/?#\[\]@!$&'()*+,;=%]+
5. HTML 태그 제거
<[^>]+>
<p>Hello</p> → Hello (치환 모드에서 빈 문자열로 교체)
6. 한글만 추출
[가-힣]+
Hello 안녕하세요 World → 안녕하세요
7. IP 주소
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
8. 날짜 (YYYY-MM-DD)
\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])
9. 금액 (콤마 포함)
\d{1,3}(,\d{3})*원?
1,000,000원, 500 매칭
10. 중복 공백 → 단일 공백
\s{2,}
치환: 단일 공백 으로 교체
자주 하는 실수 3가지
- 탐욕적(Greedy) 매칭:
<.*>는<p>text</p>전체를 잡습니다.<.*?>로 게으른(Lazy) 매칭을 사용하세요. - 이스케이프 누락:
.은 "아무 문자"이므로, 실제 점을 매칭하려면\.으로 이스케이프해야 합니다. - 앵커 미사용:
\d+는 문자열 어디서든 숫자를 찾습니다. 전체가 숫자인지 확인하려면^\d+$를 사용하세요.
결론
정규표현식은 처음 10개 패턴만 외워도 실무의 80%를 커버할 수 있습니다. 나머지는 필요할 때 찾아보면 됩니다.
위 패턴들을 지금 바로 정규식 테스터에서 직접 테스트해 보세요!
