Com 알아두면 좋은 Tip
정규표현식(Regex)의 기초 개념과 자주 쓰는 매칭 패턴 예시 총정리
알 수 없는 사용자
2026. 6. 17. 23:14
반응형
정규표현식(Regular Expression, 줄여서 Regex)은 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어입니다. 방대한 텍스트 데이터 속에서 특정 패턴을 찾거나, 바꾸거나, 이메일·전화번호 같은 유효성을 검사할 때 필수적으로 사용되는 강력한 도구입니다.
정규표현식의 핵심 기초 개념과 실무에서 바로 쓰는 자주 문 패턴들을 깔끔하게 정리해 드립니다.
1부: 정규표현식 핵심 기초 개념 (메타 문자)
정규표현식은 일반 문자와 특수한 의미를 지닌 메타 문자(Meta Characters)의 조합으로 구성됩니다. 이 메타 문자들을 조합하여 원하는 규칙을 만듭니다.
1. 문자와 위치 매칭
- . (Dot) : 아무 문자 1개를 의미합니다. (단, 줄바꿈 문자 제외)
- 예: a.b ➡️ aab, abb, a1b 등 매칭
- ^ (Caret) : 문자열의 시작을 나타냅니다.
- 예: ^Hello ➡️ Hello로 시작하는 행만 매칭
- $ (Dollar) : 문자열의 끝을 나타냅니다.
- 예: done$ ➡️ done으로 끝나는 행만 매칭
2. 문자 집합과 범위 [ ]
대괄호 [ ] 안에 넣은 문자들 중 딱 하나와 매칭됩니다. 대괄호 안에서 하이픈(-)을 쓰면 범위를 지정할 수 있습니다.
- [abc] : a 또는 b 또는 c 중 문자 1개
- [a-z] : 알파벳 소문자 중 1개
- [0-9] : 숫자 중 1개
- [^0-9] : 대괄호 안의 맨 앞에 ^가 붙으면 부정(Not)을 의미합니다. 즉, 숫자가 아닌 문자 1개
3. 수량자 (반복 매칭)
패턴이 몇 번 반복되는지 지정합니다.
- * : 앞의 패턴이 0번 이상 반복 ({0,})
- + : 앞의 패턴이 1번 이상 반복 ({1,})
- ? : 앞의 패턴이 0번 또는 1번 존재 ({0,1} - 있거나 없거나)
- {n} : 정확히 n번 반복
- {n,m} : 최소 n번에서 최대 m번 반복
4. 자주 쓰는 축약 단축어 (자주 쓰임)
- \d : 숫자와 매칭 ([0-9]와 동일, digit)
- \D : 숫자가 아닌 모든 문자와 매칭 ([^0-9]와 동일)
- \w : 문장 자모음, 숫자, 언더바(_)와 매칭 ([a-zA-Z0-9_]와 동일, word)
- \W : 알파벳+숫자+_가 아닌 문자 (특수문자, 공백 등)
- \s : 공백 문자 (스페이스, 탭, 줄바꿈 등, space)
2부: 실무에서 가장 자주 쓰는 Regex 패턴 예시
실제 개발이나 업무 자동화, 데이터 정제 시 가장 많이 복사해서 사용하는 필수 패턴 공식들입니다.
1. 이메일 주소 검사 패턴
가장 대표적인 정규표현식 예시입니다. 아이디 영역, @ 기호, 도메인 영역을 차례로 검사합니다.
코드 스니펫
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
- 해석: 알파벳·숫자·특수문자 일부가 1번 이상 반복되고(+), 중간에 @가 오며, 다시 도메인 주소가 오고, 마침표(.) 뒤에 알파벳 국가/서비스 도메인이 최소 2글자 이상({2,}) 오는 구조를 검사합니다.
- 참고: 정규식에서 마침표 기호 본연의 문자를 매칭하려면 반드시 역슬래시를 붙여 \.로 이스케이프 처리를 해야 합니다.
2. 휴대폰 번호 패턴 (010-XXXX-XXXX)
하이픈이 있거나 없는 경우를 모두 유연하게 처리하는 한국 휴대폰 번호 패턴입니다.
코드 스니펫
^010-?\d{3,4}-?\d{4}$
- 해석: 010으로 시작하여, 하이픈이 있을 수도 없을 수도 있고(-?), 중간 숫자는 3자리 또는 4자리(\d{3,4}), 다시 하이픈 유무 체크 후, 마지막은 무조건 숫자 4자리(\d{4})로 끝나는 패턴입니다.
3. 비밀번호 안전성 검사 (복합 조건)
최소 8자 이상이며 알파벳 소문자, 대문자, 숫자가 각각 최소 1개 이상 포함되어야 하는 가이드라인 패턴입니다.
코드 스니펫
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
- 해석: (?=...)는 전방탐색(Lookahead)이라는 고급 문법으로, 문자열 전반을 미리 훑으며 소문자, 대문자, 숫자가 조건에 만족하는지 먼저 검사한 후 전체 길이가 8자 이상({8,})인지 최종 매칭합니다.
4. IP 주소(IPv4) 매칭 패턴
0~255 범위의 숫자 4개가 점으로 연결된 형태를 찾습니다.
코드 스니펫
^(?:\d{1,3}\.){3}\d{1,3}$
- 해석: 1~3자리의 숫자와 점이 결합한 패턴 \d{1,3}\.이 세 번 반복되고({3}), 마지막에 다시 1~3자리 숫자로 끝나는 형태입니다.
5. 날짜 포맷 패턴 (YYYY-MM-DD)
연, 월, 일 형식을 띠고 있는 텍스트를 추출하거나 검사할 때 씁니다.
코드 스니펫
^\d{4}-\d{2}-\d{2}$
- 해석: 숫자 4자리, 하이픈, 숫자 2자리, 하이픈, 숫자 2자리 구조를 정확히 짚어냅니다.
💡 정규표현식 사용 팁
- 대소문자 구분 플래그: 정규표현식을 쓸 때 플래그 옵션으로 i (Ignore Case)를 주면 알파벳 대소문자를 구분하지 않고 매칭할 수 있어 편리합니다. (예: /[a-z]/i)
- 연습 및 테스트 도구: 정규표현식은 눈으로만 보면 이해하기 아주 어렵습니다. Regex101 같은 웹사이트를 이용하면 내가 작성한 정규식이 어떤 문자와 매칭되는지 실시간으로 하이라이팅되어 초보자도 쉽게 독학할 수 있습니다.
반응형