regexpReplace

regexpReplace (정규식 치환)

regexpReplace 함수는 문자열 또는 정규식 패턴을 대상 문자열 또는 정규식 패턴으로 찾아 교체해요. matchStr이 발견되지 않으면 inputStr이 반환됩니다. 기본적으로 입력 문자열에서 일치 패턴의 모든 발생을 교체합니다. 기본 일치 모드는 대소문자 구분입니다.

출처: 문서

본문

regexpReplace(inputStr, matchRegexp, replaceRegexp) regexpReplace(inputStr, matchRegexp, replaceRegexp, matchStartPos) regexpReplace(inputStr, matchRegexp, replaceRegexp, matchStartPos, occurrence) regexpReplace(inputStr, matchRegexp, replaceRegexp, matchStartPos, occurrence, flag)

inputStr

regexpReplace 함수를 적용할 입력 문자열 또는 컬럼 이름.

matchRegexp

입력 문자열 또는 컬럼 값과 일치시키는 데 사용하는 정규식 또는 문자열.

replaceRegexp

일치 항목이 발견되면 교체할 정규식 또는 문자열.

matchStartPos

일치를 시작할 inputStr의 인덱스. 인덱스는 0부터 셉니다. 지정하지 않으면 기본값 0입니다.

occurrence

일치한 패턴 중 어떤 발생을 교체할지 제어. 인덱스는 0부터 셉니다. 지정하지 않으면 기본값 -1입니다.

flag

regex가 inputStr에서 일치 항목을 찾는 방식을 제어하는 단일 문자 플래그. 잘못된 플래그를 지정하면 함수는 기본 대소문자 구분 일치를 적용합니다. 플래그는 하나만 지정할 수 있습니다. 지원 플래그:

  • i -> 대소문자 구분 없는 일치

사용 예시

예시 1

일치하는 문자열 o의 모든 발생을 문자열 x로 교체하는 간단한 찾기/교체 예시예요.

select regexpReplace('foo', 'o', 'x') AS value
from myTable
value
fxx

예시 2

연속된 숫자를 포함하는 정규식 패턴을 찾아 간단한 문자열 bar로 교체하는 예시예요.

select regexpReplace('foo123', '[0-9]+', 'bar') AS value
from myTable
value
foobar

예시 3

연속된 숫자가 아닌 패턴을 찾아 간단한 문자열 bar로 교체하는 예시예요.

select regexpReplace('foo123', '[^0-9]+', 'bar') AS value
from myTable
value
bar123

예시 4

replaceStr이 matchStr 정규식이 캡처한 부분 문자열에 대한 역참조를 포함할 수 있음을 보여주는 예시예요. 역참조는 $n으로 표시하며 n은 0~9 범위입니다. 아래 예시에서 입력의 모든 문자는 그 문자에 공백을 붙인 값으로 교체됩니다.

select regexpReplace('foo', '(.)', '$1 ') AS value
from myTable
value
f o o

예시 5

regexpReplace를 사용해 입력 문자열에서 단어 사이의 추가 공백을 제거하는 예시예요.

select regexpReplace('Pinot is  blazing  fast', '( ){2,}', ' ') AS value
from myTable
value
Pinot is blazing fast

예시 6

regexpReplace에서 역참조를 사용해 전화번호 형식을 지정하는 예시예요.

select regexpReplace('11234567898','(\d)(\d{3})(\d{3})(\d{4})', '$1-($2) $3-$4') AS value
from myTable
value
1-(123) 456-7898

예시 7

matchStartPos 파라미터를 사용하는 예시예요. matchStartPos가 4로 설정되어 있으므로 inputStr에 대한 패턴 일치가 인덱스 4에서 시작해 healthy가 교체되지 않습니다.

select regexpReplace('healthy, wealthy, stealthy and wise','\w+thy', 'something', 4)  AS value
from myTable
value
healthy, something, something and wise

예시 8

occurrence 파라미터를 사용하는 예시예요. 아래 예시에서 matchStr 정규식은 입력의 healthy, wealthy, stealthy 세 곳과 일치합니다. occurrence가 2로 지정되어 있으므로 (0부터 세어) 두 번째 발생인 stealthy가 something으로 교체됩니다.

select regexpReplace('healthy, wealthy, stealthy and wise','\w+thy', 'something', 0, 2)  AS value
from myTable
value
healthy, wealthy, something and wise

예시 9

flag 파라미터 사용 예시예요. 대소문자 구분 없는 플래그 i를 지정합니다.

select regexpReplace('healthy, wealthy, stealthy and wise','\w+THY', 'something', 0, 0, 'i')  AS value
from myTable
value
something, wealthy, stealthy and wise

더 알아보기 (Learn more)