이 영역을 누르면 첫 페이지로 이동
쿄코코 블로그의 첫 페이지로 이동

쿄코코

페이지 맨 위로 올라가기

쿄코코

얼레벌레 생활🤯

REGEXP,REGEXP_LIKE,REGEXP_INSTR,REGEXP_SUBSTR,REGEXP_REPLACE()

  • 2022.09.05 23:54
  • SQL
    반응형
    참고 블로그 : https://goodteacher.tistory.com/232
     

    MySQL :: MySQL 8.0 Reference Manual :: 12.8.2 Regular Expressions

    12.8.2 Regular Expressions Table 12.14 Regular Expression Functions and Operators Name Description NOT REGEXP Negation of REGEXP REGEXP Whether string matches regular expression REGEXP_INSTR() Starting index of substring matching regular expression REGE

    dev.mysql.com

    * 모든 쿼리는 match_type 사용 가능하다.

    Pattern 기능
    'c' Case-sensitive matching(대소문자 구분)
    'i' Case-insensitive matching.(대소문자구분X,default)
    'm' multi line모드,default :문자열의 시작과 끝 줄만 일치여부 체크

    match_type = 'c' , 'i' ex)

    더보기
    SELECT DISTINCT city 
    FROM station 
    WHERE REGEXP_LIKE(city,'^[aeiou]','c');
    SELECT DISTINCT city 
    FROM station 
    WHERE REGEXP_LIKE(city,'^[aeiou]','i');

     


     

      REGEXP,RLIKE,REGEXP_LIKE 

    공식문서 왈 , REGEXP,RLIKE은 REGEXP_LIKE의 동음이의어( REGEXP and RLIKE are synonyms for REGEXP_LIKE() )
     
    참고자료 : https://velog.io/@gillog/MySQL-REGEXPRegular-Expression정규-표현식
     
    Pattern 기능 예시 설명
    . 문자 하나 "..." 문자열의 길이가 세 글자 이상인 것을 찾음.
    I(수직선) 또는 (OR). I(수직선)로 구분된 문자에 해당하는 문자열을 찾음. "데이터 I (수직선)데이타" ‘데이터’ 또는 ‘데이타’에 해당하는 문자열을 찾음.
    [] [] 안에 나열된 패턴에 해당하는 문자열을 찾음. "[123]d" 대상 문자열에서 ‘1d’ 또는 ‘2d’ 또는 ‘3d’인 문자열을 찾음.
    ^ 시작하는 문자열을 찾음. "^안녕" 대상 문자열에서 ‘안녕’으로 시작하는 문자열을 찾음.
    $ 끝나는 문자열을 찾음. "잘가$" 대상 문자열에서 ‘잘가’로 끝나는 문자열을 찾음.
    Pattern 기능 예시 설명 
    * 0회 이상 나타나는 문자 "a*" ‘a’가 0번 이상 등장하는 문자열을 찾음. ‘b’, ‘a’, ‘aa’ 모두 해당.
    + 1회 이상 나타나는 문자 "국+" ‘국’이 1번 이상 등장하는 문자열을 찾음. ‘한국’, ‘미역국’, ‘국거리’ 모두 해당.
    {m,n} m회 이상 n회 이하 반복되는 문자 "치{1,2}" ‘치’가 1회 이상 2회 이하 반복하는 문자열을 찾음. ‘치커리’, ‘치카치카’ 모두 해당.
    ? 0~1회 나타나는 문자 "[가나다]?" ‘가’ 또는 ‘나’ 또는 ‘다’가 0~1회 등장하는 문자열을 찾음. ‘가지마’, ‘나라’, ‘안녕’ 모두 해당.
    Pattern 기능 예시 설명
    [A-z] 또는 [:alpha:] 또는 \a 알파벳 대문자 또는 소문자인 문자열을 찾음 "[A-z]+" 대상 문자열에서 알파벳이 한 개 이상인 문자열을 찾음
    [0-9] 또는 [:digit:] 또는 \d 숫자인 문자열을 찾음 "^[0-9]+" 한 개 이상의 숫자로 시작하는 문자열을 찾음
    Pattern 기능 예시 설명
    [^문자] 괄호 안의 문자를 포함하지 않은 문자열을 찾음 "[^길로그]" ‘길’ 또는 ‘로’ 또는 ‘그’를 포함하지 않는 문자열을 찾음. ‘길가’, ‘로그’, ‘그리고’ 모두 제외됨.

     


      REGEXP_INSTR() 

    문자열에서 정규 표현식이 등장하는 인덱스(위치) 값을 반환, 일치하지 않을 경우 0 반환, 문자 인덱스는 1부터 시작

    REGEXP_INSTR(source_char, expr[, pos[, occurrence[, return_option[, match_type]]]])
    - source_char: 점검 대상 문자열
    - expr: 정규 표현식
    - pos: 검색을 시작할 위치로 기본은 1
    - occurrence: 몇 번째로 등장한 요소인가에 대한 옵션으로 기본은 1
    - return_option: 0이면 matching이 시작한 곳, 1이면 matching이 끝난 다음 위치. 기본은 0
    -- dog 글자가 나오는 시작 인덱스 반환,문자 인덱스는 1부터 시작하므로 1로 반환
    mysql> SELECT REGEXP_INSTR('dog cat dog', 'dog'); 
    +------------------------------------+
    | REGEXP_INSTR('dog cat dog', 'dog') |
    +------------------------------------+
    |                                  1 |
    +------------------------------------+
    
    -- 2번째 문자(o) 이후부터 dog가 나오는 시작 인덱스 반환
    -- dog cat dog
    -- 123456789 -> 9인덱스 반환
    mysql> SELECT REGEXP_INSTR('dog cat dog', 'dog', 2);
    +---------------------------------------+
    | REGEXP_INSTR('dog cat dog', 'dog', 2) |
    +---------------------------------------+
    |                                     9 |
    +---------------------------------------+
    
    -- a{2}:a가 2번 반복된 aa 문자의 첫번재 인덱스 반환
    mysql> SELECT REGEXP_INSTR('aa aaa aaaa', 'a{2}');
    +-------------------------------------+
    | REGEXP_INSTR('aa aaa aaaa', 'a{2}') |
    +-------------------------------------+
    |                                   1 |
    +-------------------------------------+
    
    -- a{4}:a가 4번 연속 반복된 aaaa문자의 첫번재 인덱스 반환
    -- aa aaa aaaa
    -- 12345678 -> 8반환
    mysql> SELECT REGEXP_INSTR('aa aaa aaaa', 'a{4}');
    +-------------------------------------+
    | REGEXP_INSTR('aa aaa aaaa', 'a{4}') |
    +-------------------------------------+
    |                                   8 |
    +-------------------------------------+

     


      REGEXP_SUBSTR() 

    정규식과 일치하는 문자열 반환. 일치하지 않을 경우 NULL

    REGEXP_SUBSTR(source_char, expr[, pos[, occurrence[, match_type]]])
    - source_char: 점검 대상 문자열
    - expr: 정규 표현식
    - pos: 검색을 시작할 위치로 기본은 1
    - occurrence: 몇 번째로 등장한 요소인가에 대한 옵션으로 기본은 1
    mysql> SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+');
    +----------------------------------------+
    | REGEXP_SUBSTR('abc def ghi', '[a-z]+') |
    +----------------------------------------+
    | abc                                    |
    +----------------------------------------+
    
    -- 1번째 문자(a)부터 3번째 패턴 
    mysql> SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+', 1, 3);
    +----------------------------------------------+
    | REGEXP_SUBSTR('abc def ghi', '[a-z]+', 1, 3) |
    +----------------------------------------------+
    | ghi                                          |
    +----------------------------------------------+

     


      REGEXP_REPLACE()

    정규표현식에 해당하는 문자를 대체한다

    REGEXP_REPLACE(source_char, expr, replace_string[, pos[, occurrence[, mtch_type]]]) 
    - source_char: 점검 대상 문자열 
    - expr: 정규 표현식 
    - replace_string: 대체 문자 
    - pos: 검색을 시작할 위치로 기본은 1
    - occurrence: 몇 번째로 등장한 요소인가에 대한 옵션으로 기본은 1

     

    -- b 문자열 X로 변경
    mysql> SELECT REGEXP_REPLACE('a b c', 'b', 'X');
    +-----------------------------------+
    | REGEXP_REPLACE('a b c', 'b', 'X') |
    +-----------------------------------+
    | a X c                             |
    +-----------------------------------+
    
    
    mysql> SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X', 1, 3);
    +----------------------------------------------------+
    | REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X', 1, 3) |
    +----------------------------------------------------+
    | abc def X                                          |
    +----------------------------------------------------+
    반응형

    댓글

    이 글 공유하기

    • 구독하기

      구독하기

    • 카카오톡

      카카오톡

    • 라인

      라인

    • 트위터

      트위터

    • Facebook

      Facebook

    • 카카오스토리

      카카오스토리

    • 밴드

      밴드

    • 네이버 블로그

      네이버 블로그

    • Pocket

      Pocket

    • Evernote

      Evernote

    다른 글

    다른 글 더 둘러보기

    정보

    쿄코코 블로그의 첫 페이지로 이동

    쿄코코

    • 쿄코코의 첫 페이지로 이동

    검색

    메뉴

    • 홈

    카테고리

    • 분류 전체보기 (168)
      • Python (24)
        • 😈 99클럽 코테 스터디 4기 TIL (23)
        • 궁금한거 정리 (1)
      • SQL (16)
        • HackerRank (15)
      • [백준] Python,Java로 풀기📖 (71)
        • 정렬(Sorting) (6)
        • 그리디 (5)
        • 문자열 (7)
        • 수학 (3)
        • DFS&BFS (10)
        • 구현 (4)
        • 다이나믹 (17)
        • 이분탐색 (1)
        • 자료구조 (10)
        • 최단거리 (5)
        • 인덱스트리 (0)
      • [프로그래머스]Python,Java로 풀기 (6)
        • Level 1 (4)
        • Level 2 (2)
      • Study Platform📚 (25)
        • (운영체제) - 블로그 및 강의 참고 (0)
        • 김영한👨🏻‍🏫의 스프링 부트와 JPA 실무 완전 .. (5)
        • (알고리즘)- [이코테] 이것이 코딩테스트다 정리 (10)
        • 그림으로 배우는 Http&Network Basic (10)
      • 까먹을까봐 적는 것들 (4)
      • 테스트 보고 난 후..🤔 (0)
      • kt 에이블스쿨 (18)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • 프로그래머스
    • 99클럽
    • TiL
    • 코딩테스트준비
    • 오블완
    • 백준
    • 항해99
    • 티스토리챌린지

    나의 외부 링크

    정보

    쿄코코의 쿄코코

    쿄코코

    쿄코코

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. © 쿄코코. Designed by Fraccino.

    티스토리툴바