Home 정규 표현식을 활용한 패턴 매칭과 대체
Post
Cancel

정규 표현식을 활용한 패턴 매칭과 대체

정규 표현식을 활용한 패턴 매칭과 대체

PostgreSQL은 정규식 일치의 경우 ~를 사용하며 정규식 형식은 POSIX 정규식 표준을 따른다. ~similar to를 의미한다.


정규표현식

  • 0~9 숫자 중 하나 이상의 숫자를 포함한 경우
  • light, light, lights, light, lights, 문자가 포함된 경우
    1
    2
    3
    
    SELECT LEFT(description, 50)
    FROM ufo
    WHERE LEFT(description, 50) ~ '[0-9]+ light[s ,.]'
    


REGEXP_MATCHES()

REGEXP_MATCHES() 함수는 정규 표현을 문자열과 대조하여 일치하는 하위 문자열을 반환한다.

1
2
3
4
5
SELECT (REGEXP_MATCHES(description, '[0-9]+ light[s ,.]'))[1], COUNT(*)
FROM ufo
WHERE description ~ '[0-9]+ light[s ,.]'
GROUP BY 1
ORDER BY 2 DESC;


REGEXP_MATCHES() 예시

REGEXP_MATCHES() 함수를 정확하게 이해하기 위해 다음과 같은 예시를 활용하겠다.

x
100
2
a한글12
999test
a11b22c33


  • 예시 1번
    1
    2
    3
    4
    5
    6
    
    -- 배열을 반환한다.
    SELECT
      x,
      REGEXP_MATCHES(x, '[0-9]+')
    FROM test
    WHERE x ~ '[0-9]+';
    
xregexp_matches
100{100}
2{2}
a한글12{12}
999test{999}
a11b22c33{11}


  • 예시 2번
    1
    2
    3
    4
    5
    6
    
    -- 배열을 반환한다.
    SELECT
      x,
      (REGEXP_MATCHES(x, '[0-9]+'))[1]
    FROM test
    WHERE x ~ '[0-9]+';
    
xregexp_matches
100100
22
a한글1212
999test999
a11b22c3311
This post is licensed under CC BY 4.0 by the author.