更新时间:2026-07-08 GMT+08:00
分享

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);

相关文档