跳到主要内容

REGEXP_EXTRACT

描述

字符串 STR 进行正则匹配,抽取符合 pattern 的第 POS 个匹配部分。需要 pattern 完全匹配 STR 中的某部分,这样才能返回 pattern 部分中需匹配部分。

  • 如果没有匹配,返回空字符串。

  • 字符集匹配需要使用 Unicode 标准字符类型。例如,匹配中文请使用 \p{Han}

语法

REGEXP_EXTRACT(<str>, <pattern>, <pos>)

参数

参数描述
<str>需要进行正则匹配的列。
<pattern>目标模式。
<pos>用于指定从字符串中的哪个位置开始搜索正则表达式匹配的参数。它是一个表示字符串中字符位置的整数值(从 1 开始)。必须指定 pos

返回值

匹配 <pattern> 的部分。类型是 Varchar

举例

mysql> SELECT regexp_extract('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 1);
+-------------------------------------------------------------+
| regexp_extract('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 1) |
+-------------------------------------------------------------+
| b |
+-------------------------------------------------------------+

mysql> SELECT regexp_extract('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 2);
+-------------------------------------------------------------+
| regexp_extract('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 2) |
+-------------------------------------------------------------+
| d |
+-------------------------------------------------------------+

mysql> select regexp_extract('这是一段中文This is a passage in English 1234567', '(\\p{Han}+)(.+)', 2);
+-----------------------------------------------------------------------------------------------+
| regexp_extract('这是一段中文This is a passage in English 1234567', '(\p{Han}+)(.+)', 2) |
+-----------------------------------------------------------------------------------------------+
| This is a passage in English 1234567 |
+-----------------------------------------------------------------------------------------------+

keywords

REGEXP_EXTRACT,REGEXP,EXTRACT