

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# POSIX 연산자
<a name="pattern-matching-conditions-posix"></a>

POSIX 정규 표현식은 일치 패턴을 지정하는 일련의 문자입니다. 문자열이 정규 표현식에 설명된 정규 집합의 멤버인 경우 해당 문자열은 정규 표현식과 일치합니다.

POSIX 정규 표현식은 [LIKE](r_patternmatching_condition_like.md) 및 [SIMILAR TO](pattern-matching-conditions-similar-to.md) 연산자보다 더욱 강력한 패턴 일치 수단을 제공합니다. POSIX 정규 표현식은 패턴은 전체 문자열과 일치하는 경우에만 true를 반환하는 SIMILAR TO 연산자와 달리 문자열 구간과 일치시킬 수 있습니다.

**참고**  
POSIX 연산자를 사용하는 정규 표현식 일치는 계산에 따른 리소스 비용이 높습니다. 따라서 특히 다수의 행을 처리할 때는 최대한 LIKE를 사용하는 것이 좋습니다. 예를 들어 다음 두 쿼리는 기능면에서 동일하지만 LIKE를 사용하는 쿼리의 실행 속도가 정규 표현식을 사용하는 쿼리보다 몇 배 더 빠릅니다.  

```
select count(*) from event where eventname ~ '.*(Ring|Die).*'; 
select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';
```

## 구문
<a name="pattern-matching-conditions-posix-synopsis"></a>

```
expression [ ! ] ~ pattern
```

## 인수
<a name="pattern-matching-conditions-posix-arguments"></a>

 * expression*   
열 이름 같이 유효한 UTF-8 문자 표현식입니다.

\$1  
부정 연산자입니다. 정규 표현식과 일치하지 않습니다.

\$1  
대/소문자를 구분하여 *expression*의 하위 문자열과 일치시킵니다.  
`~~`는 [LIKE](r_patternmatching_condition_like.md)의 동의어입니다.

 *pattern*   
정규 표현식 패턴을 나타내는 문자열 리터럴입니다.

*pattern*에 와일드카드 문자가 포함되어 있지 않으면 패턴이 문자열 자체만 의미합니다.

‘`. * | ? `‘ 등 메타 문자가 포함된 문자열을 찾으려면 백슬래시 2개('` \\`')를 사용하여 문자를 이스케이프 처리하세요. `SIMILAR TO`나 `LIKE`와 달리 POSIX 정규 표현식 구문은 사용자 정의 이스케이프 문자를 지원하지 않습니다.

문자 표현식 중 하나는 CHAR 또는 VARCHAR 데이터 형식이 될 수 있습니다. 데이터 형식이 서로 다른 경우에는 Amazon Redshift가 *pattern*을 *expression*의 데이터 형식으로 변환합니다.

문자 표현식 모두 CHAR 또는 VARCHAR 데이터 형식이 될 수 있습니다. 표현식의 데이터 형식이 다르면 Amazon Redshift가 *expression*의 데이터 형식으로 변환합니다.

POSIX 패턴 일치에서 지원되는 메타 문자는 다음과 같습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/pattern-matching-conditions-posix.html)

다음은 Amazon Redshift에서 지원되는 POSIX 문자 클래스입니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/pattern-matching-conditions-posix.html)

 Amazon Redshift는 정규 표현식에서 다음과 같이 Perl의 영향을 받는 연산자를 지원합니다. 이러한 연산자는 백슬래시 2개(‘`\\`’)를 사용하여 이스케이프 처리합니다.  

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/pattern-matching-conditions-posix.html)

## 예제
<a name="pattern-matching-conditions-posix-synopsis-examples"></a>

다음 표는 POSIX 연산자를 사용한 패턴 일치의 예를 나타낸 것입니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/pattern-matching-conditions-posix.html)

다음은 이름에 `E` 또는 `H`가 포함된 도시를 찾는 예입니다.

```
SELECT DISTINCT city FROM users
WHERE city ~ '.*E.*|.*H.*' ORDER BY city LIMIT 5;

      city
-----------------
 Agoura Hills
 Auburn Hills
 Benton Harbor
 Beverly Hills
 Chicago Heights
```

다음 예는 이름에 `E` 또는 `H`가 포함되지 않은 도시를 찾습니다.

```
SELECT DISTINCT city FROM users WHERE city !~ '.*E.*|.*H.*' ORDER BY city LIMIT 5;

      city
-----------------
 Aberdeen	
 Abilene	
 Ada	
 Agat	
 Agawam
```

다음은 기본 이스케이프 문자열('`\\`')을 사용하여 "마침표"가 포함된 문자열을 찾는 예입니다.

```
SELECT venuename FROM venue
WHERE venuename ~ '.*\\..*'
ORDER BY venueid;

          venuename
------------------------------
 St. Pete Times Forum
 Jobing.com Arena
 Hubert H. Humphrey Metrodome
 U.S. Cellular Field
 Superpages.com Center
 E.J. Nutter Center
 Bernard B. Jacobs Theatre
 St. James Theatre
```