ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정규표현식(Regex)이란?
    Back-End/Language 2024. 4. 16. 21:55
    반응형

     정규표현식은 문자열을 처리할 때 매우 유용하며, 복잡해 보일 수 있지만 기본적인 구성 요소를 이해하면 쉽게 다룰 수 있습니다. 여기 정규표현식의 기본 패턴과 사용법을 간단하게 요약해 봅니다.

    기본 문자

    • .: 임의의 단일 문자와 일치합니다.
    • ^: 문자열의 시작과 일치합니다.
    • $: 문자열의 끝과 일치합니다.

    문자 클래스

    • [abc]: 괄호 안의 어느 한 문자(a, b, 또는 c)와 일치합니다.
    • [^abc]: 괄호 안의 어느 문자도 아닌 모든 문자와 일치합니다.
    • [a-z]: a부터 z 사이의 모든 소문자와 일치합니다.
    • \d: 숫자와 일치합니다. [0-9]와 동일합니다.
    • \w: 단어 문자(word character)와 일치합니다. [a-zA-Z0-9_]와 동일합니다.
    • \s: 공백 문자와 일치합니다.

    수량자

    • *: 바로 앞의 요소가 0회 이상 일치합니다.
    • +: 바로 앞의 요소가 1회 이상 일치합니다.
    • ?: 바로 앞의 요소가 0회 또는 1회 일치합니다.
    • {n}: 바로 앞의 요소가 정확히 n회 일치합니다.
    • {n,}: 바로 앞의 요소가 n회 이상 일치합니다.
    • {n,m}: 바로 앞의 요소가 최소 n회, 최대 m회 일치합니다.

    그룹화 및 참조

    • (abc): 괄호 안의 패턴을 그룹으로 묶습니다. 이를 통해 여러 패턴을 하나의 단위로 처리할 수 있습니다.
    • |: OR 조건을 나타냅니다. 예를 들어, a|b는 a 또는 b와 일치합니다.

    이스케이프

    • \: 특수 문자를 이스케이프하여 리터럴 문자로 사용할 수 있게 합니다. 예를 들어, \., \* 등입니다.

    플래그

    정규표현식은 다양한 플래그와 함께 사용할 수 있으며, 플래그에 따라 검색 동작이 달라집니다.

    • g: 전역 검색을 수행합니다.
    • i: 대소문자를 구분하지 않고 검색합니다.
    • m: 여러 줄 모드를 활성화합니다.

     

    정규표현식 예시

    1. 이메일 주소 검증

    ^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$

    이 정규표현식은 대부분의 표준 이메일 주소 형식을 검증합니다. 여기서 \w+는 하나 이상의 단어 문자를 의미하고, [\.-]?는 점이나 대시가 0회 또는 1회 나타날 수 있음을 나타냅니다.

    2. URL 검증

    ^(http|https)://[^\s/$.?#].[^\s]*$

    이 정규표현식은 http 또는 https로 시작하는 유효한 URL을 찾습니다. [^\s/$.?#]는 공백, 슬래시, 달러 기호, 물음표, 점, 또는 해시 기호를 제외한 문자를 의미합니다.

    3. IP 주소 검증 (IPv4)

    \b(?:\d{1,3}\.){3}\d{1,3}\b

    이 정규표현식은 각 옥텟이 0에서 255 사이인 IPv4 주소를 검증합니다. \b는 단어 경계를 나타내고, \d{1,3}는 1에서 3자리의 숫자를 의미합니다.

    4. 날짜 형식 검증 (YYYY-MM-DD)

    ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$

    이 정규표현식은 YYYY-MM-DD 형식의 날짜를 검증합니다. 여기서 \d{4}는 4자리 숫자(연도)를 의미하고, (0[1-9]|1[0-2])는 01에서 12 사이의 숫자(월)를 검증합니다.

    5. HTML 태그 찾기

    <([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)

    이 정규표현식은 HTML 문서에서 태그를 찾습니다. 여기서 ([a-z]+)는 태그 이름을 찾고, <\/\1>는 같은 태그 이름의 닫는 태그를 찾습니다.

    6. 전화번호 검증

    ^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$

    이 정규표현식은 다양한 형식의 미국 전화번호를 검증합니다. 여기서 \(?와 \)?는 괄호가 있거나 없을 수 있음을 의미하고, [-. ]?는 숫자 사이에 대시, 점, 또는 공백이 올 수 있음을 나타냅니다.

    7. 비밀번호 복잡성 검증

    ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$

    이 정규표현식은 최소 8자 이상이고, 적어도 하나의 문자와 하나의 숫자를 포함하는 비밀번호를 검증합니다.

    8. 신용카드 번호 검증

    ^(?:4[0-9]{12}(?:[0-9]{3})? # Visa

     | 5[1-5][0-9]{14} # MasterCard

     | 3[47][0-9]{13} # American Express

     | 3(?:0[0-5]|[68][0-9])[0-9]{11} # Diners Club

     | 6(?:011|5[0-9]{2})[0-9]{12} # Discover

     | (?:2131|1800|35\d{3})\d{11} # JCB )$

    이 정규표현식은 주요 신용카드 회사의 카드 번호 형식을 검증합니다.

    9. 사용자 이름 검증

    ^[a-z0-9_-]{3,16}$

    이 정규표현식은 3자에서 16자 사이의 소문자, 숫자, 밑줄, 또는 대시로 구성된 사용자 이름을 검증합니다.

    10. 코드 주석 찾기

    \/\/.*|\/\*[\s\S]*?\*\/

    이 정규표현식은 C나 Java 같은 프로그래밍 언어에서 단일 라인(//) 또는 멀티 라인(/* */) 주석을 찾습니다.

    정규표현식은 강력한 도구이지만, 너무 복잡한 패턴이나 과도한 백트래킹을 포함할 경우 성능 문제를 일으킬 수 있으므로 주의해서 사용해야 합니다.

    반응형

    'Back-End > Language' 카테고리의 다른 글

    클로저(Closure)란?  (0) 2024.04.05
Designed by Tistory.