REGEXP(Regular Expression)
- 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
- 문자열 처리 방법 중 하나
- 특정한 조건의 문자를 검색하거나 치환하는 과정을 간편하게 처리할 수 있는 수단
- SQL부터 스크립트 언어까지 다양한 곳에서 활용
- Pattern을 사용해 문자열 처리
- 찾을 대상문자열에서 정규 표현식을 사용해 해당 패턴과 일치하는 문자열 검색
- 패턴과 일치하는 문자열을 찾은 후 추출하거나 치환 가능
Matching
Pattern | 기능 | 예시 | 설명 |
---|
. | 문자 하나 | "..." | 문자열의 길이가 세 글자 이상인 것을 찾음 |
|(수직선) | |로 구분된 문자에 해당하는 문자열을 찾음. | "데이터|데이타" | ‘데이터’ 또는 ‘데이타’에 해당하는 문자열을 찾음. |
또는 (OR) | | | |
[] | [] 안에 나열된 패턴에 해당하는 문자열을 찾음. | "[123]d" | 대상 문자열에서 ‘1d’ 또는 ‘2d’ 또는 ‘3d’인 문자열을 찾음. |
^ | 시작하는 문자열을 찾음. | "^안녕" | 대상 문자열에서 ‘안녕’으로 시작하는 문자열을 찾음. |
$ | 끝나는 문자열을 찾음. | "잘가$" | 대상 문자열에서 ‘잘가’로 끝나는 문자열을 찾음. |
Numbers Limit
Pattern | 기능 | 예시 | 설명 |
---|
* | 0회 이상 나타나는 문자 | "a*" | ‘a’가 0번 이상 등장하는 문자열을 찾음. ‘b’, ‘a’, ‘aa’ 모두 해당. |
+ | 1회 이상 나타나는 문자 | "국+" | ‘국’이 1번 이상 등장하는 문자열을 찾음. ‘한국’, ‘미역국’, ‘국거리’ 모두 해당. |
{m,n} | m회 이상 n회 이하 반복되는 문자 | "치{1,2}" | ‘치’가 1회 이상 2회 이하 반복하는 문자열을 찾음. ‘치커리’, ‘치카치카’ 모두 해당. |
? | 0~1회 나타나는 문자 | "[가나다]?" | ‘가’ 또는 ‘나’ 또는 ‘다’가 0~1회 등장하는 문자열을 찾음. ‘가지마’, ‘나라’, ‘안녕’ 모두 해당. |
String Group
Pattern | 기능 | 예시 | 설명 |
---|
[A-z] | 알파벳 대문자 또는 소문자인 문자열을 찾음 | "[A-z]+" | 대상 문자열에서 알파벳이 한 개 이상인 문자열을 찾음 |
또는 [:alpha:] | | | |
또는 \a | | | |
[0-9] | 숫자인 문자열을 찾음 | "^[0-9]+" | 한 개 이상의 숫자로 시작하는 문자열을 찾음 |
또는 [:digit:] | | | |
또는 \d | | | |
Not
Pattern | 기능 | 예시 | 설명 |
---|
[^문자] | 괄호 안의 문자를 포함하지 않은 문자열을 찾음 | "[^길로그]" | ‘길’ 또는 ‘로’ 또는 ‘그’를 포함하지 않는 문자열을 찾음. |
| | | ‘길가’, ‘로그’, ‘그리고’ 모두 제외됨. |
사용 예제
SELECT *
FROM tbl
WHERE data like '%길%'
OR data like '%로%'
OR data like '%그%'
SELECT *
FROM tbl
WHERE data REGEXP '길|로|그'
SELECT *
FROM tbl
WHERE data LIKE '안녕%' OR data LIKE '하이%';
SELECT *
FROM tbl
WHERE data REGEXP ('^안녕|^하이');
SELECT *
FROM tbl
WHERE CHAR_LENGTH(data) = 7 AND SUBSTRING(data, 2, 3) = 'abc';
SELECT *
FROM tbl
WHERE data REGEXP ('^.abc...$');
SELECT *
FROM tbl
WHERE data LIKE ??????????
SELECT *
FROM tbl
WHERE data REGEXP ('^[0-9]+$');