REGEXP_EXTRACT
更新时间:2025-10-17
描述
字符串 STR 进行正则匹配,抽取符合 pattern 的第 POS 个匹配部分。需要 pattern 完全匹配 STR 中的某部分,这样才能返回 pattern 部分中需匹配部分。
- 如果没有匹配,返回空字符串。
- 字符集匹配需要使用 Unicode 标准字符类型。例如,匹配中文请使用
\p{Han}
。
语法
SQL
1REGEXP_EXTRACT(<str>, <pattern>, <pos>)
参数
参数 | 描述 |
---|---|
<str> |
需要进行正则匹配的列。 |
<pattern> |
目标模式。 |
<pos> |
用于指定从字符串中的哪个位置开始搜索正则表达式匹配的参数。它是一个表示字符串中字符位置的整数值(从 1 开始)。必须指定 pos 。 |
返回值
匹配 <pattern>
的部分。类型是 Varchar
。
举例
SQL
1mysql> SELECT regexp_extract('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 1);
2+-------------------------------------------------------------+
3| regexp_extract('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 1) |
4+-------------------------------------------------------------+
5| b |
6+-------------------------------------------------------------+
7
8mysql> SELECT regexp_extract('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 2);
9+-------------------------------------------------------------+
10| regexp_extract('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 2) |
11+-------------------------------------------------------------+
12| d |
13+-------------------------------------------------------------+
14
15mysql> select regexp_extract('这是一段中文 This is a passage in English 1234567', '(\\p{Han}+)(.+)', 2);
16+-----------------------------------------------------------------------------------------------+
17| regexp_extract('这是一段中文 This is a passage in English 1234567', '(\p{Han}+)(.+)', 2) |
18+-----------------------------------------------------------------------------------------------+
19| This is a passage in English 1234567 |
20+-----------------------------------------------------------------------------------------------+
keywords
Plain Text
1REGEXP_EXTRACT,REGEXP,EXTRACT