regexp_replace
regexp_replace函数用于将source字符串中匹配pattern的子串替换成指定字符串replacement后,返回结果字符串。Spark 4.0版本支持position参数,可指定从第N次匹配开始替换。
命令格式
regexp_replace(str, pattern, replacement[, position])
参数说明
表 1 参数说明
| 参数 | 是否必选 | 参数类型 | 说明 |
|---|---|---|---|
| str | 是 | STRING | 待替换的字符串。 |
| pattern | 是 | STRING | 正则表达式模式。pattern为空串时返回报错。 |
| replacement | 是 | STRING | 将匹配pattern的子串替换为该字符串。 |
| position | 否 | BIGINT | 指定从第position次匹配开始替换之后的所有匹配。为0或1时替换所有匹配。为其他类型或小于0时,返回报错。默认值为0(替换所有匹配)。 |
返回值说明
返回STRING类型的值。
- 如果pattern为空串,返回报错。
- 当引用不存在的组时,不进行替换。
- 如果replacement值为NULL且pattern有匹配,返回NULL。
- str、pattern或position值为NULL时,返回NULL。
示例代码
替换所有匹配,返回num-num。
SELECT regexp_replace('100-200', '(\\d+)', 'num'); 替换所有匹配,返回2222。
SELECT regexp_replace('abcd', '[a-z]', '2'); 从第2次匹配开始替换,返回a222。
SELECT regexp_replace('abcd', '[a-z]', '2', 2); 从第3次匹配开始替换,返回ab22。
SELECT regexp_replace('abcd', '[a-z]', '2', 3); 从第4次匹配开始替换,返回abc2。
SELECT regexp_replace('abcd', '[a-z]', '2', 4);