

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# REGEX\$1REPLACE
<a name="sql-reference-regex-replace"></a>

REGEX\$1REPLACE 将子字符串替换为备用子字符串。它返回以下 Java 表达式的值。

```
java.lang.String.replaceAll(regex, replacement)
```

## 语法
<a name="sql-reference-regex-replace-syntax"></a>

```
REGEX_REPLACE(original VARCHAR(65535), regex VARCHAR(65535), replacement VARCHAR(65535), startPosition int, occurence int)

RETURNS VARCHAR(65535)
```

## 参数
<a name="sql-reference-regex-replace-parameters"></a>

*original*

要对其执行正则表达式操作的字符串。

*regex*

要匹配的[正则表达式](https://en.wikipedia.org/wiki/Regular_expression)。如果 *regex* 的编码与 *original* 的编码不匹配，则将向错误流写入错误。

*replacement*

用于替换 *original* 字符串中的 *regex* 匹配项的字符串。如果 *replacement* 的编码与 *original* 或 *regex* 的编码不匹配，则将向错误流写入错误。

*startPosition*

要搜索的 *original* 字符串中的第一个字符。如果 *startPosition* 小于 1，则将向错误流写入错误。如果 *startPosition* 大于 *original* 的长度，则将返回 *original*。

*occurence*

要替换的与 *regex* 表达式匹配的字符串数量。如果 *occurence* 为 0，则将替换所有匹配 *regex* 的子字符串。如果 *occurence* 小于 0，则将向错误流写入错误。

## 示例
<a name="sql-reference-regex-replace-example"></a>

### 示例数据集
<a name="w2aac22c33c17c11b2"></a>

以下示例基于示例股票数据集，后者是[《Amazon Kinesis Analytics 开发人员指南》](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/get-started-exercise.html) 中的*入门练习*的一部分。

要运行每个示例，您需要一个具有样本股票代码输入流的 Amazon Kinesis Analytics 应用程序。要了解如何创建 Analytics 应用程序和配置示例股票代码输入流，请参阅[《Amazon Kinesis Analytics 开发人员指南》](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/get-started-exercise.html) 中的*入门练习*。

具有以下架构的示例股票数据集。

```
(ticker_symbol  VARCHAR(4),
sector          VARCHAR(16),
change          REAL,
price           REAL)
```

### 示例 1：将源字符串中的所有字符串值替换为新值
<a name="w2aac22c33c17c11b4"></a>

在此示例中，如果 `sector` 字段中的所有字符串都与正则表达式匹配，则它们都将被替换。

```
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
        ticker_symbol VARCHAR(4), 
        SECTOR VARCHAR(24), 
        CHANGE REAL, 
        PRICE REAL);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM"

SELECT STREAM   TICKER_SYMBOL,
                REGEX_REPLACE(SECTOR, 'TECHNOLOGY', 'INFORMATION TECHNOLOGY', 1, 0);
                CHANGE,
                PRICE
FROM "SOURCE_SQL_STREAM_001"
```

上一示例输出的流与以下内容类似。

![\[Table showing stock data with columns for time, ticker symbol, sector, change, and price.\]](http://docs.aws.amazon.com/zh_cn/kinesisanalytics/latest/sqlref/images/sql-reference-regex-replace.png)


## 注意
<a name="sql-reference-regex-replace-notes"></a>

REGEX\$1REPLACE 不是 SQL:2008 标准的一部分。它是 Amazon Kinesis Data Analytics 流式 SQL 扩展。

如果所有参数都为 `null`，则 REGEX\$1REPLACE 返回 `null`。