REGEXP_EXTRACT_ALL

在字符串中查找所有出现的正则表达式匹配模式的子字符串,并把找到的字符串以数组返回。

命令格式

array<T> regexp_extract_all(string <source>, string <pattern>[,bigint <group_id>])

参数说明

  • source:必填。STRING类型。待分析的字符串。

  • pattern:必填。STRING类型。待匹配的模型,可以是STRING类型常量或正则表达式。更多正则表达式编写规范,请参见正则表达式规范

  • group_id:可选。BIGINT类型。返回指定组的所有匹配结果,必须大于等于0。如果不指定该值, 默认返回group_id1的所有匹配结果;如果等于0pattern将被当作一个整体进行匹配。

返回值说明

返回ARRAY类型。如果指定group_id, 返回该group_id匹配的所有结果组成的数组;如果不指定group_id, 则返回group_id1的所有匹配结果组成的数组。

使用示例

  • 不指定group_id默认返回第一个group_id匹配到的结果。

    SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)');

    结果如下。

    +------------+
    | _c0        |
    +------------+
    | [100,300] |
    +------------+
  • 指定group_id值为2,返回第二个group_id匹配到的结果。

    SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)',2);

    结果如下。

    +------------+
    | _c0        |
    +------------+
    | [200,400] |
    +------------+

相关函数

REGEXP_EXTRACT_ALL函数属于字符串函数,更多查找字符串、转换字符串格式的相关函数请参见字符串函数