跳到主要内容
版本: 最新版本-3.5

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:用于匹配子字符串的正则表达式模式。

  • pospattern 可能包含多个组。 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