정규표현식이 왜 배우기 어려운가
정규표현식(Regex)은 '외계 언어' 같아서 기호 나열이 어지럽습니다. 하지만 텍스트 처리 능력은 대체 불가능합니다 — 이메일 검증, 데이터 추출, 일괄 치환을 몇 줄의 정규식으로 수십 줄 코드를 대체할 수 있습니다. 핵심은 자주 쓰는 패턴을 익히고 필요할 때 찾아볼 수 있으면 되며, 전부 외울 필요는 없습니다.
자주 쓰는 정규식 치트시트
검증류
| 용도 | 정규식 패턴 |
|---|---|
| 이메일 | ^[\w.-]+@[\w.-]+.\w+$ |
| 휴대폰 번호(중국 본토) | ^1[3-9]\d{9}$ |
| URL | ^https?://[\w.-]+(:\d+)?(/.*)?$ |
| 주민번호(18자리) | ^\d{17}[\dXx]$ |
| IP 주소 | ^(\d{1,3}.){3}\d{1,3}$ |
추출류
| 용도 | 정규식 패턴 |
|---|---|
| 모든 숫자 추출 | \d+ |
| HTML 태그 내용 추출 | <(tag)>(.*?)</\1> |
| 링크 추출 | https?://[\w./?=&%-]+ |
| 중국어 추출 | [\u4e00-\u9fa5]+ |
치환류
| 용도 | 정규식 → 치환 |
|---|---|
| 빈 줄 제거 | 연속 줄바꿈+공백 → 단일 줄바꿈 |
| 휴대폰 번호 마스킹 | 가운데 네 자리를 ****로 치환 |
| 카멜 케이스 → 스네이크 | 대문자 앞에 밑줄 추가 |
DocsAll 정규식 테스트 도구
정규식 테스트 도구로 실시간 디버깅:
- 정규식 테스트 도구 열기
- 정규식 입력, 플래그 선택(g 전역, i 대소문자 무시, m 여러 줄)
- 테스트 텍스트 붙여넣기
- 실시간 하이라이트로 매칭 결과 확인
쓰면서 테스트하는 것이 맹목적으로 쓰는 것보다 훨씬 효율적입니다. 더 많은 정규식 기초는 정규표현식 튜토리얼을 참조하세요.
자주 쓰는 메타문자 암기법
- . 임의 문자(줄바꿈 제외)
- \d 숫자, \w 문자 숫자 밑줄, \s 공백
- ^ 줄 시작, $ 줄 끝
- * 0회 이상, + 1회 이상, ? 0회 또는 1회
- {n,m} n회에서 m회
- [] 문자 집합, () 그룹, | 또는
디버깅 팁
구간별 테스트
복잡한 정규식은 구간별로 작성하고 한 구간 추가할 때마다 테스트하여 문제를 더 쉽게 찾을 수 있습니다.
비탐욕 매칭 활용
탐욕 매칭은 너무 많이 매칭하고, 비탐욕 매칭(수량자 뒤에 ? 추가)은 최소로 매칭하여 내용 추출 시 자주 사용합니다.
이스케이프 주의
., *, ? 등 메타문자 자체를 매칭하려면 백슬래시로 이스케이프해야 하며, 점을 매칭하려면 .를 사용하세요.
정규식에 과도하게 의존하지 마세요
복잡한 HTML/JSON 파싱에 정규식을 사용하면 오류가 발생하기 쉽습니다. 파서를 사용해야 할 때는 파서를 사용하세요. 정규식은 규칙이 명확한 텍스트 매칭에 적합합니다.
조언
자주 쓰는 정규식을 자신만의 치트시트로 정리하고 필요할 때 복사해서 수정하세요. 테스트 도구로 실시간 검증하면 정규식이 그렇게 어렵지 않습니다.