在字串中尋找所有出現的Regex匹配模式的子字串,並把找到的字串以數組返回。
命令格式
array<T> regexp_extract_all(string <source>, string <pattern>[,bigint <group_id>])
參數說明
source:必填。STRING類型。待分析的字串。
pattern:必填。STRING類型。待匹配的模型,可以是STRING類型常量或Regex。更多Regex編寫規範,請參見Regex規範。
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函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數。