在字符串中查找所有出现的正则表达式匹配模式的子字符串,并把找到的字符串以数组返回。
命令格式
array<T> regexp_extract_all(string <source>, string <pattern>[,bigint <group_id>])
参数说明
source:必填。STRING类型。待分析的字符串。
pattern:必填。STRING类型。待匹配的模型,可以是STRING类型常量或正则表达式。更多正则表达式编写规范,请参见正则表达式规范。
group_id:可选。BIGINT类型。返回指定组的所有匹配结果,必须大于等于
0
。如果不指定该值, 默认返回group_id为1
的所有匹配结果;如果等于0
,pattern将被当作一个整体进行匹配。
返回值说明
返回ARRAY类型。如果指定group_id, 返回该group_id匹配的所有结果组成的数组;如果不指定group_id, 则返回group_id为1
的所有匹配结果组成的数组。
使用示例
不指定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函数属于字符串函数,更多查找字符串、转换字符串格式的相关函数请参见字符串函数。