Mysql 정규식
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 정규식 패턴[편집]
notifications_active (중요사항)
1. '.' 은 모든 단일 문자를 매치 시킨다. (= LIKE 에서 '_'와 같음)
2. '.....' 은 . 숫자만큼의 문자를 매치시킨다. -> ^.....$ -> 시작문자 수가 5개인 문자 3. 문자 클래스 [..]은 대괄호 안에 있는 각각의 모든 문자를 매치 시킨다. ex> [abc]는 'a', 'b', 'c'를 각각 매치 시킨다. 4. 문자 클래스에서 범위 지정은 대쉬('-')를 사용한다. ex> [0-9] 모든 숫자, [a-z] 모든 영문자 매치 5. 테스트되는 값이 있는 모든 곳에서 매칭을 한다. (LIKE는 전체 값에서만 패턴 매치를 진행한다.) 6. 처음이라는 토큰 '^' 와 끝이라는 토큰 '$' 가 있다.
(응용)
(노래) -> 노래와 정확히 일치 노래{2} -> 노래 문자열이 연속적으로 정확히 2회 일치 -> ^.{5}$ = ^.....$ 노래{2,4} -> 노래가 2~4회 일치 [ab]노래 -> []에 묶인 어느 것인가와 일치 : a노래, b노래 [1-3]명 -> 지정한 범위에 포함된 임의의 문자와 일치 : 1명, 2명, 3명 [^1-3]명 -> 지정한 범위에 포함되지 않는 임의의 문자에 일치 : 4명, 5명 ....
1.1 regexp '문자'[편집]
sd_storage '문자' : 아무런 기호가 없는 것 -> like '% 문자 % '와 일치
mysql> select * from pet where species regexp 'do' ; -> do가 최소한 1회 일치
(= SELECT * FROM pet WHERE species LIKE '%do%'; )
mysql> SELECT * FROM pet WHERE name REGEXP 'w';
1.2 regexp '?'[편집]
- ? : 글자 0 개 또는 1 개 일치 -> books? : book, books
mysql> select * from pet where species regexp 'do?'; -> d 또는 do가 일치
1.3 regexp '.'[편집]
- . : 단일문자를 매치시킨다. 즉 문자 하나 일치 ->.ap : map, jap, kap, lap ....
mysql> select * from pet where species regexp '.d'; ->단일문자 d로 끝나는 앞의 모든 문자
mysql> select * from pet1 where species regexp 'd.'; -> 단일문자 d로 시작되는 뒤의 모든 문자
위에서 d.로 검색하는 경우에 bird는 검색되지 않음에 유의함.
mysql> select * from pet1 where species regexp '.d.'; 중간에 d가 들어가는 문자
mysql> select * from pet where name regexp '^.....$'; -> 시작부터 5글자로 끝나는 문장을 찾는다.
(= SELECT * FROM pet WHERE name REGEXP '^.{5}$'; )
mysql> select * from pet where name regexp '.....$'; -> 끝에서 5글자 이상이 되는 문장
1.4 regexp '+'[편집]
- + : 문자 여러개 반복(1자 이상 일치) -> la+ : la, laa,laaa ...
mysql> select * from pet where name regexp 'f+'; -> f가 1회 이상 반복
1.5 regexp '*'[편집]
- * : 문자 여러개 반복(0자 이상 일치) -> la* : l, la, laa, laaa...
mysql> select * from pet where name regexp 's*'; -> s가 0회 이상 들어 있는 문자
1.6 regexp '^'[편집]
(6) ^ : 문자열의 처음 -> ^1 -> 1로 시작되는 줄
mysql<source lang=sql>> select * from pet where owner regexp '^b'; -> b로 시작되는 문자
(= SELECT * FROM pet WHERE owner LIKE 'b%'; )
mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';
바이너리 키워드로 인해 소문자 b로 시작하는 이름을 찾는다.
1.7 regexp '$'[편집]
- $ : 문자열의 끝 -> 1$ -> 1로 끝나는 줄
mysql> select * from pet where name regexp 'r$'; -> 끝이 r로 끝나는 문자
1.8 regexp '(그룹)'[편집]
- () : 그룹화 ->('(abc)*') : 'abc'문자열이 연속적으로 0 번 이상
1.9 regexp '[문자]'[편집]
- [문자들..] : 괄호안의 어느 문자와 일치
<source lang=sql>mysql> select * from pet where name regexp '[ab]'; -> 문장 중에 a 또는 b 가 들어 있는 문자
mysql> select * from pet where name regexp '^[bc]'; -> b 또는 c로 시작되는 문자
mysql> select * from pet where death regexp '[0-9]'; [0-9] -> 모든 숫자
mysql> select * from pet where sex regexp '[A-Za-z]'; [A-Za-z] -> 모든 영문글자
</source>
1.10 regexp '{숫자}'[편집]
(10){숫자} : 숫자만큼 반복 // {2,4} -> 2회 ~ 4회 반복
mysql> select * from pet where name regexp 'ow{1}'; -> ow 1회
mysql> select * from pet where owner regexp 'n{1,2}'; -> n이 1회 또는 2회되는 문자
- {n}('repeat-n-times') 연산자를 사용했다.
mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$'; -> 시작부터 5문자가 되는 문자
1.11 regexp '|'[편집]
- | : OR 연산 (또는) -> ('A|B') : A 또는 B
mysql> select * from pet where name regexp '^c|y$';
1.12 regexp '문자'[편집]
- - : 문자의 지정 범위는 -를 사용한다. -> [0-9] : 모든 숫자 , [a-z] : 모든 영문자
mysql> select * from pet where name regexp '^[a-f]';