TIL · 잡담

정규 표현식(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. 결론 📌

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

    반응형