[SQL] Regular Expression

Gi Woon Lee·2024년 9월 14일
0

TIL

목록 보기
65/78

TIL (Today I Learned): SQL의 REGEXP 및 정규 표현식 정리

REGEXP란?

  • REGEXP는 SQL에서 정규 표현식(Regular Expression)을 사용하여 문자열 패턴을 검색하거나 필터링할 때 사용하는 연산자입니다.
  • 주로 MySQL, MariaDB 등에서 사용되며, Oracle에서는 REGEXP_LIKE 함수로 유사하게 사용할 수 있습니다.
  • 정규 표현식을 통해 복잡한 문자열 조건을 간결하게 표현하고 데이터를 효율적으로 필터링할 수 있습니다.

정규 표현식 기본 패턴

  1. 기본 패턴

    • ^[A] → 대문자 A로 시작하는 조건.
    • [abc] = a, b or c → 대괄호 안의 문자 중 하나와 일치.
    • [^abc] = a, b, c 빼고 뭐든지 → 대괄호 안의 문자 제외한 모든 문자와 일치.
    • [a-z] = a to z → 소문자 a부터 z까지의 모든 문자와 일치.
    • [A-Z] = A to Z → 대문자 A부터 Z까지의 모든 문자와 일치.
    • [a-zA-Z] = a to z, A to Z → 대소문자 모든 문자와 일치.
    • [0-9] = 0 to 9 → 숫자 0부터 9까지의 모든 숫자와 일치.
    • . -> 정규표현식에서 점(.)은 임의의 한 문자를 의미합니다. 즉, 어떤 문자든지 한 개가 올 수 있다는 뜻입니다. 알파벳, 숫자, 공백 등 모든 문자를 포함합니다.
    • * -> 별표(*)는 앞에 있는 패턴이 0번 이상 반복될 수 있음을 의미합니다. 즉, 앞에 있는 문자가 몇 번이든 나올 수 있다는 뜻입니다. 예를 들어, .*는 임의의 문자들이 0번 이상 등장할 수 있음을 나타냅니다.
    • 끝을 검사하는 $ 추가: 정규 표현식의 끝에 $를 추가하여 문자열이 정확히 @leetcode.com으로 끝나도록 설정해야 한다. 없으면 뒤에 추가적으로 오는 것을 검증하지 못함!
  2. 반복 패턴

    • [ ]? = 0번 혹은 1번 발생 → 해당 패턴이 0번 또는 1번 발생.
    • [ ]+ = 1번 혹은 더 발생 → 해당 패턴이 1번 이상 발생.
    • [ ]* = 0번 혹은 더 발생 → 해당 패턴이 0번 이상 발생.
    • [ ]{n} = n번 발생 → 해당 패턴이 정확히 n번 발생.
    • [ ]{n,} = n번 혹은 더 발생 → 해당 패턴이 n번 이상 발생.
    • [ ]{y,z} = y번 이상 z번 이하 발생 → 해당 패턴이 y번 이상 z번 이하 발생.

예시 문제 및 정규 표현식 점검

  1. 문제 1: 0이나 1로 시작하고 total digit = 11인 전화번호

    • 패턴: [01][0-9]{10}
    • 설명: 첫 번째 자리가 0 또는 1이고, 그 뒤로 0부터 9 사이의 숫자가 10번 더 나와 총 11자리인 전화번호를 검증.
  2. 문제 2: 대문자로 시작하고, 소문자를 포함하고 있으며 중간에 숫자 하나만 허락되는 조건

    • 패턴: [A-Z][a-z]*[0-9][a-z]*
    • 설명: 대문자로 시작하며, 그 뒤에 소문자가 0번 이상, 중간에 숫자가 정확히 한 번 등장하고 다시 소문자가 0번 이상 나오는 조건을 만족.
  3. 문제 3: 이메일 형식 검증 (giwoo123@gmail.com)

    • 패턴: [A-Za-z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}
    • 설명: 이메일 형식에 맞는 패턴으로, 사용자명 부분에 알파벳, 숫자, 특수문자를 허용하고 @ 뒤 도메인과 최상위 도메인을 검사합니다.

배운 점

  • 정규 표현식은 문자열 패턴 매칭과 검증을 간결하게 처리할 수 있어 데이터 검증, 필터링, 문자열 조작 등에 매우 유용합니다.
  • REGEXP를 사용하면 SQL에서도 복잡한 문자열 패턴 검사를 수행할 수 있습니다.
  • 다양한 패턴과 반복 조건을 이해하고 응용하는 것은 데이터 분석과 웹 개발에서 필수적인 기술입니다.

0개의 댓글