
# 正则式函数
本文介绍正则式函数的语法规则，包括参数解释、函数示例等。
#### 函数列表
表1正则式函数 
| 函数                                                                                                                                                                                       | 描述                         |
|:---|:---|
| [regexp_extract函数]     | 提取目标字符串中符合正则表达式的子字符串。      |
| [regexp_like函数]        | 判断目标字符串是否符合正则表达式。          |
| [regexp_extract_all函数] | 从目标字符串中提取符合正则表达式的子字符串。     |
| [regexp_replace函数]     | 删除或替换目标字符串中符合正则表达式的全部子字符串。 |
| [regexp_split函数]       | 分割目标字符串，返回被分割后的子字符串合集。     |
   
 #### regexp_extract函数
提取目标字符串中符合正则表达式的子字符串。
- 提取并返回目标字符串中符合正则表达式的第一个子字符串。 语法：regexp_extract(expr, regularExpr)
  

- 提取并返回目标字符串中符合正则表达式的第n个子字符串。 语法：regexp_extract(expr, regularExpr, n)
  
表2参数说明 
| 参数名称        | 描述                             | 类型      | 是否必选 |
|:---|:---|:---|:---|
| expr        | 目标字符串。                         | String  | 是    |
| regularExpr | 包含捕获组的正则表达式，(\\d)(\\d)表示两个捕获组。 | String  | 是    |
| n           | 第n个符合正则表达式的子字符串。               | Integer | 否    |
   
返回值类型：String类型
示例：SELECT REGEXP_EXTRACT('HTTP/2.0', '\\d+')
表3查询分析结果 
| 类型  | 查询语句                                   | 返回结果 |
|:---|:---|:---|
| 场景1 | REGEXP_EXTRACT('HTTP/2.0', '\\d+')     | 2    |
| 场景2 | REGEXP_EXTRACT ('HTTP/2.0', '\\d+', 1) | 2    |
   
 #### regexp_like函数
判断目标字符串是否符合正则表达式。
语法：regexp_like(expr, regularExpr)
表4参数说明 
| 参数名称        | 描述                            | 类型     | 是否必选 |
|:---|:---|:---|:---|
| expr        | 目标字符串                         | String | 是    |
| regularExpr | 包含捕获组的正则表达式，(\\d)(\\d)表示两个捕获组 | String | 是    |
   
返回值类型：Boolean类型
示例：SELECT REGEXP_LIKE('HTTP/2.0', '\\d+')
表5查询分析结果 
| 类型 | 查询语句                            | 返回结果 |
|:---|:---|:---|
| 场景 | REGEXP_LIKE('HTTP/2.0', '\\d+') | true |
   
 #### regexp_extract_all函数
从目标字符串中提取符合正则表达式的子字符串。
语法：regexp_extract_all(expr, regularExpr)
表6参数说明 
| 参数名称        | 描述                            | 类型     | 是否必选 |
|:---|:---|:---|:---|
| expr        | 目标字符串                         | String | 是    |
| regularExpr | 包含捕获组的正则表达式，(\\d)(\\d)表示两个捕获组 | String | 是    |
   
返回值类型：Array类型
示例：SELECT REGEXP_EXTRACT_ALL('HTTP/2.0', '\\d+')
表7查询分析结果 
| 类型 | 查询语句                                    | 返回结果        |
|:---|:---|:---|
| 场景 | REGEXP_EXTRACT_ALL ('HTTP/2.0', '\\d+') | \["2","0"\] |
   
 #### regexp_replace函数
删除或替换目标字符串中符合正则表达式的全部子字符串。
- 删除目标字符串中符合正则表达式的子字符串，返回未被删除的子字符串。 语法：regexp_replace(expr, regularExpr)
  

- 替换目标字符串中符合正则表达式的子字符串，返回被替换后的字符串。 语法：regexp_replace(expr, regularExpr, replaceStr)
  
表8参数说明 
| 参数名称        | 描述                            | 类型     | 是否必选 |
|:---|:---|:---|:---|
| expr        | 目标字符串                         | String | 是    |
| regularExpr | 包含捕获组的正则表达式，(\\d)(\\d)表示两个捕获组 | String | 是    |
| replaceStr  | 替换的字符串                        | String | 否    |
   
返回值类型：String类型
示例：SELECT REGEXP_REPLACE('ab12cd34', '\\d+'), REGEXP_REPLACE('ab12cd34', '\\d+', '00')
表9查询分析结果 
| 类型  | 查询语句                                     | 返回结果     |
|:---|:---|:---|
| 场景1 | REGEXP_REPLACE('ab12cd34', '\\d+')       | abcd     |
| 场景2 | REGEXP_REPLACE('ab12cd34', '\\d+', '00') | ab00cd00 |
   
 #### regexp_split函数
分割目标字符串，返回被分割后的子字符串合集。
语法：regexp_split(expr, regularExpr)
表10参数说明 
| 参数名称        | 描述                            | 类型     | 是否必选 |
|:---|:---|:---|:---|
| expr        | 目标字符串                         | String | 是    |
| regularExpr | 包含捕获组的正则表达式，(\\d)(\\d)表示两个捕获组 | String | 是    |
   
返回值类型：Array类型
示例：SELECT REGEXP_SPLIT('request_uri:/request/path-0/file-7','/')
表11查询分析结果 
| 类型 | 查询语句                                                   | 返回结果                                           |
|:---|:---|:---|
| 场景 | REGEXP_SPLIT('request_uri:/request/path-0/file-7','/') | \["request_uri:","request","path-0","file-7"\] |
   
