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