정규표현식은 문자열에서 특정 패턴을 찾거나 조작하는 데 사용되는 강력한 도구입니다. 이 글에서는 정규표현식의 개요, 기초 문법, 그리고 실제 적용 예제를 살펴보겠습니다.
## 개요
정규표현식(Regular Expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어입니다[2]. 줄여서 정규식(Regex)이라고도 부릅니다. 정규표현식을 사용하면 복잡한 문자열 패턴을 간단하게 표현할 수 있어, 문자열 검색, 치환, 추출 등 다양한 작업에 활용됩니다[1].
주요 용도:
- 이메일, 전화번호 등의 형식 검증
- 특정 패턴을 가진 문자열 추출
- 문자열 치환
- 데이터 정제 및 가공
## 기초 문법
정규표현식의 기본 문법은 다음과 같습니다:
1. **문자 클래스**
- `[abc]`: a, b, c 중 하나와 일치
- `[^abc]`: a, b, c를 제외한 문자와 일치
- `[a-z]`: a부터 z까지의 소문자와 일치
2. **메타 문자**
- `.`: 임의의 한 문자와 일치
- `^`: 문자열의 시작
- `$`: 문자열의 끝
- `\d`: 숫자와 일치
- `\w`: 알파벳, 숫자, 언더스코어와 일치
- `\s`: 공백 문자와 일치
3. **수량자**
- `*`: 0회 이상 반복
- `+`: 1회 이상 반복
- `?`: 0회 또는 1회 반복
- `{n}`: 정확히 n회 반복
- `{n,}`: n회 이상 반복
- `{n,m}`: n회 이상 m회 이하 반복
4. **그룹과 참조**
- `(...)`: 그룹화 및 캡처
- `(?:...)`: 그룹화만 하고 캡처하지 않음
5. **선택과 범위**
- `|`: 또는(OR) 연산자
- `[...]`: 문자 집합
## 적용 예제
1. **이메일 주소 검증**
```
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
```
이 패턴은 대부분의 이메일 주소 형식과 일치합니다[3].
2. **전화번호 추출**
```
\d{2,3}-\d{3,4}-\d{4}
```
이 패턴은 한국의 일반적인 전화번호 형식(예: 02-123-4567 또는 010-1234-5678)과 일치합니다[34].
3. **URL 검증**
```
^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
```
이 패턴은 대부분의 URL 형식과 일치합니다[29].
4. **HTML 태그 제거**
```
<([^>]+)>
```
이 패턴을 사용하여 HTML 태그를 찾아 제거할 수 있습니다[27].
5. **비밀번호 복잡성 검사**
```
^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$
```
이 패턴은 최소 8자 이상이며, 영문자, 숫자, 특수문자를 각각 하나 이상 포함하는 비밀번호와 일치합니다[29].
정규표현식은 강력한 도구이지만, 복잡한 패턴을 작성하거나 해석하는 것이 때로는 어려울 수 있습니다. 따라서 실제 사용 시에는 충분한 테스트와 검증이 필요합니다. 또한, 프로그래밍 언어나 도구에 따라 정규표현식의 문법이 약간씩 다를 수 있으므로 사용하는 환경에 맞는 문법을 확인하는 것이 중요합니다.
'etc > Regex' 카테고리의 다른 글
Java Matcher 클래스 완벽 가이드 – 정규식 활용과 주요 메서드 정리 (0) | 2025.02.26 |
---|---|
정규식 테스트를 위한 최고의 웹사이트 모음 (1) | 2025.02.05 |