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 |
+-----------------------------------------------------------------------------------------------+