프로그래밍 언어/Database
[SQL] MySQL REGEXP(정규 표현식)
혼다
2024. 8. 12. 20:21
REGEXP(=Regular Exrpession) 정규 표현식
REGEXP는 정규 표현식을 사용하여 문자열 패턴과 일치시키는 데 사용되는 함수입니다. REGEXP를 사용하면 기본 연산자보다 복잡한 문자열 조건을 걸어서 데이터를 검색할 수 있습니다.
정규 표현식은 Pattern을 사용해서 문자열을 처리합니다. 찾을 대상문자열에서 정규 표현식을 사용하여 해당 Pattern에 맞는 문자열을 검색합니다. 사용되는 Pattern의 종류는 아래와 같습니다.
기본 사용법
SELECT column_name
FROM table_name
WHERE column_name REGEXP '정규 표현식';
Pattern 종류
Matching
pattern | 기능 | 예시 | 설명 |
. | 문자 하나 | "..." | 문자열의 길이가 세 글자 이상인 것을 찾음 |
| (수직선) | OR(=또는) | "강아지|고양이" | '강아지' 또는 '고양이'를 포함하는 문자열을 찾음 |
[] | [] 안에 나열된 패턴에 해당하는 문자열을 찾음. [] 괄호 안에 있는 문자 중 하나. |
"[123]d" | '1d' 또는 '2d' 또는 '3d'를 포함하는 문자열을 찾음 |
^ | 문자열의 시작 | "^안녕" | '안녕'으로 시작하는 문자열을 찾음 |
$ | 문자열의 끝 | "안녕$" | '안녕'으로 끝나는 문자열을 찾음 |
Times (반복 횟수)
pattern | 기능 | 예시 | 설명 |
* | 0회 이상 반복 | "a*" | 'a'가 0번 이상 등장하는 문자열을 찾음. "b", "a", "aa" 모두 해당됨 |
+ | 1회 이상 반복 | "a+" | 'a'가 1번 이상 등장하는 문자열을 찾음. "a", "aa", "bab" 모두 해당됨 |
{m} | 정확히 m번 반복 | "a{3}" | 'aaa'가 있는 문자열을 찾음 |
{m, } | m회 이상 반복 | "a{3,}" | 'aaa', 'aaaa', 'aaaaa' 등등 a가 연속 3번 이상 반복되는 문자열이 포함된 것을 찾음 |
{m, n} | m회 이상 n회 이하 반복 | "a{1,2}" | 'a' 또는 'aa'을 포함하는 문자열을 찾음 |
? | 0~1회 반복 | "[ab]?" | 'a' 또는 'b'가 0~1회 등장하는 문자열을 찾음. 'a', 'b', 'ab', 'ac', 'bc' 모두 해당됨 |
GROUP
pattern | 기능 | 예시 | 설명 |
[A-z] 또는 [:alpha:] 또는 \a | 알파벳 대문자 또는 소문자인 문자열을 찾음 | "[A-z]+" | 알파벳이 한 개 이상인 문자열을 찾음 |
[0-9] 또는 [:digit:] 또는 \d | 숫자인 문자열을 찾음 | "^[0-9]+" | 한 개 이상의 숫자로 시작하는 문자열을 찾음 |
NOT
pattern | 기능 | 예시 | 설명 |
[^문자] | 괄호 안의 문자를 포함하지 않는 문자열을 찾음 | [^가나다] | '가' 또는 '나' 또는 '다'를 포함하지 않는 문자열을 찾음. '가지', '나무', '다람쥐' 모두 제외됨 |
참고 사이트:
- https://velog.io/@gillog/MySQL-REGEXPRegular-Expression%EC%A0%95%EA%B7%9C-%ED%91%9C%ED%98%84%EC%8B%9D
- https://velog.io/@dxstyblxe/SQL-MySQL-REGEXP