REGEXP_EXTRACT_ALL
更新时间:2025-10-17
描述
对字符串 str 进行正则匹配,抽取符合 pattern 的所有子模式匹配部分。需要 pattern 完全匹配 str 中的某部分,这样才能返回 pattern 部分中需匹配部分的字符串数组。如果没有匹配或者 pattern 没有子模式,返回空字符串。
字符集匹配需要使用 Unicode 标准字符类型。例如,匹配中文请使用 \p{Han}。
语法
REGEXP_EXTRACT_ALL(<str>, <pattern>)
返回值
String 类型。
举例
SQL
1mysql> SELECT regexp_extract_all('AbCdE', '([[:lower:]]+)C([[:lower:]]+)');
2+--------------------------------------------------------------+
3| regexp_extract_all('AbCdE', '([[:lower:]]+)C([[:lower:]]+)') |
4+--------------------------------------------------------------+
5| ['b'] |
6+--------------------------------------------------------------+
7
8mysql> SELECT regexp_extract_all('AbCdEfCg', '([[:lower:]]+)C([[:lower:]]+)');
9+-----------------------------------------------------------------+
10| regexp_extract_all('AbCdEfCg', '([[:lower:]]+)C([[:lower:]]+)') |
11+-----------------------------------------------------------------+
12| ['b','f'] |
13+-----------------------------------------------------------------+
14
15mysql> SELECT regexp_extract_all('abc=111, def=222, ghi=333','("[^"]+"|\\w+)=("[^"]+"|\\w+)');
16+--------------------------------------------------------------------------------+
17| regexp_extract_all('abc=111, def=222, ghi=333', '("[^"]+"|\w+)=("[^"]+"|\w+)') |
18+--------------------------------------------------------------------------------+
19| ['abc','def','ghi'] |
20+--------------------------------------------------------------------------------+
21
22mysql> select regexp_extract_all('这是一段中文 This is a passage in English 1234567', '(\\p{Han}+)(.+)');
23+------------------------------------------------------------------------------------------------+
24| regexp_extract_all('这是一段中文 This is a passage in English 1234567', '(\p{Han}+)(.+)') |
25+------------------------------------------------------------------------------------------------+
26| ['这是一段中文'] |
27+------------------------------------------------------------------------------------------------+
