본문 바로가기
Web Study/DataBase

SQLD - 정규 표현식

by 쿠리의일상 2023. 8. 30.
문자열의 규칙을 표현하는 검색 패턴
문자열 검색과 치환에 주로 사용

 

 

Posix 연산자


기본연산자

  • . : 모든 문자와 일치
  • | : or, 대체 문자를 구분
    • 먼저 들어온 문자를 리턴
    • ex. Regexp_substr('aa', 'a|aa') => 'a' 리턴

 

검색 패턴과 시작과 끝 지정

  • \ : 백슬래시, 다음 문자를 일반 문자로 취급 (이스케이프문자)
  • ^ : 캐럿, 문자열의 시작
  • $ : 문자열의 끝

 

수량사

선행 표현식의 일치 횟수를 지정

  • ? : 0회 또는 1회 일치
  • * : 0회 또는 그 이상의 횟수로 일치
  • + : 1회 또는 그 이상의 횟수로 일치

 

Greedy

패턴을 최대로 일치 시킴

  • {m} : m회 일치
  • {m,} : m회 최소 일치
  • {,m} : m회 최대 일치
  • {m,n} : 최소 m회, 최대 n회 일치
  • () : 괄호 안 표현식을 하나의 단위로 취급
  • \n : 역참조, n번때 서브 표현식과 일치, n은 1~9 사이 정수 ex. (ab|cd)x\1 인 경우, 'abxab', 'cdxcd' ... Ok
  • [char...] : 문자 리스트 중 한문자와 일치
  • [...-...] : 하이픈(-)은 문자 혹은 숫자의 범위 의미
  • [^char...] : 문자 리스트에 포함되지 않은 한 문자와 일치 ex. [0-9] : 0~9까지의 숫자, [a-zA-Z] : 영대소문자
  • [:digit:] : 숫자만
  • [:lower:] : 소문자만
  • [:upper:] : 대문자만
  • [:alpha:] : 영대소문자
  • [:xdigit:] : 16진수 = [0-9a-fA-F]
  • [:punct:] : 구두점 기호
  • [:blank:] : 공백 문자
  • [:space:] : 공간 문자 -> 스페이스, 엔터, 탭

 

 

Perl 연산자


  • \d : 숫자
  • \D : 숫자가 아닌 모든 문자 = [^[:digit:]]

 

  • \w : 숫자와 영문자
  • \W : 숫자와 영문자가 아닌 모든 문자 (언더바 제외) = [^[:alnum:]_]

 

  • \s : 공백 문자
  • \S : 공백 문자가 아닌 모든 문자

 

수량사와 유사

비탐욕적으로 동작

  • ?? : 0회 또는 1회 일치
  • *? : 0회 또는 그 이상의 횟수로 일치
  • +? : 1회 또는 그 이상의 횟수로 일치

 

Non greedy 방식

패턴을 최소로 일치시킴

  • {m}? : m회 일치
  • {m,}? : 최소 m회 일치
  • {,m}? : 최대 m회 일치
  • {m,n}? : 최소 m회 일치, 최대 n회 일치

 

 

관련 함수

Regexp_like (검색문자열지정, 검색패턴지정, 일치옵션지정)

일치하면 true, 아니면 false 리턴

 

Regexp_replace (검색문자열지정, 검색패턴, 변경문자열지정, 변경위치, 패턴일치횟수지정)

변경한 값을 반환

 

Regexp_substr (검색문자열, 검색패턴, 검색시작위치, 패턴일치횟수, 서브표현식지정)

일치한 패턴을 반환

 

Regexp_instr (검색문자열, 검색패턴, 검색시작위치, 패턴일치횟수, 반환옵션지정, 일치옵션지정, 서브표현식지정)

검색 문자열에서 일치한 패턴의 시작위치를 정수로 반환

 

Regexp_count (검색문자열, 검색패턴, 시작위치, 일치옵션)

검색 문자열에서 일치한 패턴의 횟수를 반환

'Web Study > DataBase' 카테고리의 다른 글

SQLD - Join 에 대해  (0) 2023.09.10
SQLD - Transaction (트랜잭션)  (0) 2023.09.07
SQLD - 정규화/반정규화  (0) 2023.08.23
SQLD - 스키마, ERD  (0) 2023.08.21
SQLD - 데이터 모델링의 이해  (0) 2023.08.20