regexp_replace
- Spark2.4.5版本及以前版本:regexp_replace函数用于将source字符串中匹配pattern的子串替换成指定字符串replace_string后,返回结果字符串。
 - Spark3.1.1版本:regexp_replace函数用于将source字符串中第occurrence次匹配pattern的子串,以及之后匹配pattern的子串,全都替换成指定字符串replace_string后,返回结果字符串。
 
相似函数:regexp_replace1,regexp_replace1函数用于将source字符串中第occurrence次匹配pattern的子串,替换成指定字符串replace_string后,返回结果字符串。但egexp_replace1函数仅适用于Spark2.4.5版本及以前版本。
即Spark2.4.5版适用的函数:regexp_replace1函数支持指定occurrence,但是regexp_replace函数不支持指定occurrence。
命令格式
- spark2.4.5及以前版本
    
regexp_replace(string <source>, string <pattern>, string <replace_string>)
 
- spark3.1.1版本
   
regexp_replace(string <source>, string <pattern>, string <replace_string>[, bigint <occurrence>])
 
参数说明
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        说明  | 
     
|---|---|---|---|
| 
        source  | 
      
        是  | 
      
        STRING  | 
      
        待替换的字符。  | 
     
| 
        pattern  | 
      
        是  | 
      
        STRING  | 
      
        STRING类型常量或正则表达式。待匹配的模型。更多正则表达式编写规范,请参见正则表达式规范。pattern为空串时返回报错。  | 
     
| 
        replace_string  | 
      
        是  | 
      
        STRING  | 
      
        将匹配pattern的字符串替换后的字符串。  | 
     
| 
        occurrence  | 
      
        否  | 
      
        BIGINT  | 
      
        必须大于等于1,表示将第occurrence次匹配的字符串替换为replace_string,为1时表示替换所有匹配的子串。为其他类型或小于1时,返回报错。默认值为1。 
         说明: 
         该字段仅Spark3.1.1版本的功能适用。  | 
     
返回值说明
返回STRING类型的值。
 
  - 如果pattern为空串或pattern中没有分组,返回报错。
 - 当引用不存在的组时,不进行替换。
 - 如果replace_string值为NULL且pattern有匹配,返回NULL。
 - 如果replace_string值为NULL但pattern不匹配,返回NULL。
 - source、pattern或occurrence值为NULL时,返回NULL。
 
- 适用于spark3.1.1版本示例。
   
   
select regexp_replace('abcd', '[a-z]', '2');返回 2222。
select regexp_replace('abcd', '[a-z]', '2', 1);返回 a222。
select regexp_replace('abcd', '[a-z]', '2', 2);返回 ab22。
select regexp_replace('abcd', '[a-z]', '2', 3);返回 abc2。
select regexp_replace('abcd', '[a-z]', '2', 4);