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 |