- Published on
정규식(Regular Expression) 기초
- Authors
- Name
- devnmin
정규식(Regular Expression) 이해하기
정규식은 문자열에서 특정 패턴을 찾거나 매칭, 치환하는 데 사용되는 강력한 도구입니다. 데이터 검증, 텍스트 필터링, 문자열 변환 등 다양한 작업에 활용됩니다.
정규식이 필요한 이유
- 문자열 검증: 이메일, 전화번호, 비밀번호 등의 형식 검사
- 데이터 추출: 텍스트에서 특정 패턴의 정보 추출
- 텍스트 변환: 특정 패턴의 문자열을 다른 형식으로 변환
- 데이터 정제: 불필요한 문자 제거나 형식 통일
기본 문법
1. 기본 패턴
기호 | 의미 | 예시 | 설명 |
---|---|---|---|
. | 아무 문자 하나 | a.b | acb , a1b 등 매칭 |
^ | 문자열의 시작 | ^Hello | Hello로 시작하는 문자열 |
$ | 문자열의 끝 | world$ | world로 끝나는 문자열 |
* | 0개 이상 반복 | ab* | a , ab , abb 등 |
+ | 1개 이상 반복 | ab+ | ab , abb 등 |
? | 0개 또는 1개 | ab? | a , ab |
2. 문자 클래스
패턴 | 설명 | 예시 |
---|---|---|
[abc] | a, b, c 중 하나 | [abc]at → cat, bat |
[a-z] | 소문자 알파벳 | [a-z]+ → hello |
[A-Z] | 대문자 알파벳 | [A-Z]+ → HELLO |
[0-9] | 숫자 | [0-9]+ → 12345 |
3. 특수 문자 클래스
패턴 | 의미 | 동일 표현 |
---|---|---|
\d | 숫자 | [0-9] |
\w | 단어 문자 | [a-zA-Z0-9_] |
\s | 공백 문자 | 스페이스, 탭, 줄바꿈 |
\D | 숫자가 아닌 문자 | [^0-9] |
\W | 단어 문자가 아닌 문자 | [^a-zA-Z0-9_] |
\S | 공백이 아닌 문자 | 공백, 탭, 줄바꿈이 아닌 문자 |
실용적인 정규식 패턴
1. 이메일 주소
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
- 설명: 일반적인 이메일 주소 형식 검증
- 예시:
user@example.com
,john.doe@company.co.kr
2. 전화번호 (한국)
^01[016789]-\d{3,4}-\d{4}$
- 설명: 한국 휴대폰 번호 형식 검증
- 예시:
010-1234-5678
,016-123-4567
3. URL
^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
- 설명: 웹 URL 형식 검증
- 예시:
https://www.example.com
,example.com/path
다양한 프로그래밍 언어에서의 사용
JavaScript
const pattern = /\d+/g;
const text = 'Price: 100 dollars';
const matches = text.match(pattern);
console.log(matches); // ['100']
Python
import re
pattern = r"\d+"
text = "Price: 100 dollars"
matches = re.findall(pattern, text)
print(matches) # ['100']
Java
import java.util.regex.*;
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("Price: 100 dollars");
while (matcher.find()) {
System.out.println(matcher.group()); // 100
}
정규식 사용 시 주의사항
- 성능 고려: 복잡한 정규식은 성능에 영향을 줄 수 있습니다.
- 가독성: 복잡한 패턴은 주석을 달아 설명하거나 분리하여 작성합니다.
- 검증: 정규식 테스트 도구(regex101.com 등)를 활용하여 패턴을 검증합니다.
- 예외 처리: 정규식 매칭 실패 케이스를 고려한 예외 처리가 필요합니다.
유용한 정규식 도구
- regex101.com: 정규식 테스트 및 디버깅
- regexr.com: 실시간 정규식 테스트
- debuggex.com: 정규식 시각화 도구
마무리
정규식은 텍스트 처리에 있어 매우 강력한 도구입니다. 처음에는 복잡해 보일 수 있지만, 기본 패턴을 이해하고 실제 사용해보면 많은 문자열 처리 작업을 효율적으로 수행할 수 있습니다. 추가적으로 정규식 계산기 정규식 계산기 를 만들어 보았습니다.
다음 글에서는 더 복잡한 정규식 패턴과 실제 프로젝트에서의 활용 사례를 살펴보겠습니다! 🚀