regexp_extract_all
从目标字符串 (str
) 中提取所有与正则表达式模式 (pattern
) 匹配的子字符串,并对应于 pos
指定的正则表达式组索引。此函数返回一个数组。
在正则表达式中,组用括号 () 括起来,并通过从左到右计算它们的左括号来编号,从 1 开始。例如,([[:lower:]]+)C([[:lower:]]+)
是匹配大写字母 C
的左侧或右侧的小写字母。此模式包含两个组:C
左侧的 ([[:lower:]]+)
是第一组,C
右侧的 ([[:lower:]]+)
是第二组。
该模式必须完全匹配 str
的某些部分。如果未找到匹配项,则返回一个空字符串。
此函数从 v3.1.10 版本开始支持。
语法
ARRAY<VARCHAR> regexp_extract_all(VARCHAR str, VARCHAR pattern, BIGINT pos)
参数
-
str
:要匹配的字符串。 -
pattern
:用于匹配子字符串的正则表达式模式。 -
pos
:pattern
可能包含多个组。pos
指示要提取的正则表达式组。
返回值
返回一个由 VARCHAR 元素组成的数组。
示例
-- Return all the letters that match group 1 in the pattern.
MySQL > SELECT regexp_extract_all('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 1);
+-------------------------------------------------------------------+
| regexp_extract_all('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 1) |
+-------------------------------------------------------------------+
| ['b'] |
+-------------------------------------------------------------------+
-- Return all the letters that match group 2 in the pattern.
MySQL > SELECT regexp_extract_all('AbCdExCeF', '([[:lower:]]+)C([[:lower:]]+)', 2);
+---------------------------------------------------------------------+
| regexp_extract_all('AbCdExCeF', '([[:lower:]]+)C([[:lower:]]+)', 2) |
+---------------------------------------------------------------------+
| ['d','e'] |
+---------------------------------------------------------------------+
关键词
REGEXP_EXTRACT_ALL,REGEXP,EXTRACT