기타

정규 표현식(Regex) 완벽 가이드

devhyen 2024. 7. 1. 14:55

1. 정규 표현식(Regex)이란?

정규 표현식(Regular Expression, Regex)은 특정한 문자열 패턴을 검색, 매칭, 변환하는 데 사용되는 도구입니다.
프로그래밍에서 텍스트 데이터를 다룰 때, 효율적으로 문자열을 찾고 조작할 수 있도록 도와줍니다.

 

✅ 어디에 사용될까?
🖤 회원가입 시 이메일 & 패스워드 유효성 검사
🖤 로그 파일에서 특정 패턴(예: 에러 로그)만 필터링
🖤 데이터 크롤링 시 원하는 문자열 추출

 

보안 제품 개발 실무에서도 많이 활용 되고 있습니다


2. 정규 표현식 기본 문법

기호 의미 예제
. 아무 문자 1개 a.c"abc", "aac" 매칭
^ 문자열의 시작 ^Hello"Hello world" 매칭
$ 문자열의 끝 world$"Hello world" 매칭
* 앞 문자가 0개 이상 반복 go*"g", "go", "goo", "gooo"
+ 앞 문자가 1개 이상 반복 go+"go", "goo", "gooo"
? 앞 문자가 0개 또는 1개 colou?r"color", "colour"

3. 실전 활용 예제 🚀

📌 1) 이메일 검증 (회원가입 폼)

import re

email = "user@example.com"
pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"

if re.match(pattern, email):
    print("✅ 유효한 이메일 주소입니다!")
else:
    print("❌ 잘못된 이메일 형식입니다.")

🔹 실행 결과:
✅ "user@example.com" → 올바른 이메일
❌ "user@.com" → 잘못된 이메일

📌 2) 로그 파일에서 ERROR 메시지만 추출

import re

log_data = """
INFO: Server started
ERROR: Connection failed
WARNING: Disk space low
ERROR: Timeout occurred
"""

errors = re.findall(r"ERROR: .*", log_data)
print(errors)

🔹 실행 결과:
["ERROR: Connection failed", "ERROR: Timeout occurred"]

실전에서 웹 서버 로그를 분석할 때 유용하게 사용 가능!

📌 3) 비밀번호 강도 검사 (8자 이상, 영문+숫자+특수문자 포함)

import re

password = "StrongPass!123"
pattern = r"^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$"

if re.match(pattern, password):
    print("✅ 강력한 비밀번호입니다!")
else:
    print("❌ 비밀번호 조건을 충족하지 않습니다.")

✔ 안전한 패스워드를 만들기 위해 필수!

4. 결론 📌

정규 표현식은 단순한 문자열 검색을 넘어, 데이터 검증, 필터링, 변환등 다양한 곳에서 필수적인 도구입니다.
이메일 유효성 검사, 로그 분석, 데이터 전처리 등 실무에서 꼭 활용해 보세요!