regexp_extract_all
从 str 中提取与正则表达式 pattern 相匹配的子字符串并返回一个字符串数组。字符串必须匹配 pos 指定的正则分组。
在正则表达式中,分组是用括号 () 包裹起来的。一个 pattern 可能包含多个组,按照括号从左到右进行编号,起始数为 1。比如 ([[:lower:]]+)C([[:lower:]]+) 包含两个分组,C 左边的 ([[:lower:]]+) 为第一个分组,右边的 ([[:lower:]]+) 为第二个分组。该正则表达式匹配大写字母 C 左边和右边的小写字母。
pattern 必须完全匹配 str 的一部分。如果没有匹配的字符串,返回空字符串。
该函数从 3.1.10 版本开始支持。
语法
ARRAY<VARCHAR> regexp_extract_all(VARCHAR str, VARCHAR pattern, BIGINT pos)
参数说明
-
str:要提取字符的字符串。 -
pattern: 待匹配的正则模式。 -
pos:pattern中可能包含多个分组,pos用于指定第几个组,从 1 开始。
返回值说明
返回一个字符串数组。
示例
-- 返回 pattern 中第一个分组匹配到的所有字符。
MySQL > SELECT regexp_extract_all('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 1);
+-------------------------------------------------------------------+
| regexp_extract_all('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 1) |
+-------------------------------------------------------------------+
| ['b'] |
+-------------------------------------------------------------------+
-- 返回 pattern 中第二个分组匹配的所有字符。
MySQL > SELECT regexp_extract_all('AbCdExCeF', '([[:lower:]]+)C([[:lower:]]+)', 2);
+---------------------------------------------------------------------+
| regexp_extract_all('AbCdExCeF', '([[:lower:]]+)C([[:lower:]]+)', 2) |
+---------------------------------------------------------------------+
| ['d','e'] |
+---------------------------------------------------------------------+
Keywords
REGEXP_EXTRACT_ALL,REGEXP,EXTRACT