regexp_extract
REGEXP_EXTRACT函数用于将字符串source按照pattern的分组规则进行字符串匹配,返回第groupid个组匹配到的字符串内容。
命令格式
regexp_extract(string <source>, string <pattern>[, bigint <groupid>])
参数说明
参数 |
是否必选 |
参数类型 |
说明 |
---|---|---|---|
source |
是 |
STRING |
待拆分的字符串。 |
pattern |
是 |
STRING |
STRING类型常量或正则表达式。待匹配的模型。 |
groupid |
否 |
BIGINT |
BIGINT类型常量,必须大于等于0。 |
返回值说明
返回STRING类型。
- 如果pattern为空串或pattern中没有分组,返回报错。
- groupid非BIGINT类型或小于0时,返回报错。
- 不指定时默认为1,表示返回第一个组。
- 如果groupid等于0,则返回满足整个pattern的子串。
- source、pattern或groupid值为NULL时,返回NULL。
示例代码
将 basketball 按照 bas(.*?)(ball) 拆分。返回ket。
select regexp_extract('basketball', 'bas(.*?)(ball)');
返回 basketball 。
select regexp_extract('basketball', 'bas(.*?)(ball)',0);
返回99。在DLI上提交正则计算的SQL,需要使用两个"\"作为转义字符。
select regexp_extract('8d99d8', '8d(\\d+)d8');
返回【你好】。
select regexp_extract('【你好】hello', '([^\\x{00}-\\x{ff}]+)');
返回你好。
select regexp_extract('【你好】hello', '([\\x{4e00}-\\x{9fa5}]+)');