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

ddoddo·2023년 2월 11일
0

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

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


정규표현식

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

REGEXP_MATCHES()

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

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번
-- 배열을 반환한다.
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번
-- 배열을 반환한다.
SELECT
	x,
    (REGEXP_MATCHES(x, '[0-9]+'))[1]
FROM test
WHERE x ~ '[0-9]+';
xregexp_matches
100100
22
a한글1212
999test999
a11b22c3311

0개의 댓글