MariaDB REGEXP_INSTR() 函数使用指南

在 MariaDB 中, REGEXP_INSTR() 函数从一个字符串中搜索和指定模式匹配的子串并返回的子串的位置索引。

MariaDB REGEXP_INSTR() 语法

这里是 MariaDB REGEXP_INSTR() 的语法:

REGEXP_INSTR(str, pattern)

参数

str
必需的。一个字符串。
regexp
必需的。正则表达式。

请注意,在撰写本文时,MariaDB 的版本接受的参数比 MySQL 的 REGEXP_INSTR()少。MySQL 的 REGEXP_INSTR() 允许您为搜索的起始位置提供参数,要搜索的出现次数,要返回的位置类型,以及优化正则表达式的方法。

如果您未提供参数或提供了错误数量的参数,MariaDB 将报告一个错误:ERROR 1582 (42000): Incorrect parameter count in the call to native function 'REGEXP_INSTR'

返回值

MariaDB REGEXP_INSTR() 函数从一个字符串 str 中搜索和指定模式 regexp 匹配的子串并返回的子串的索引。如果没有匹配到,则返回 NULL

如果 str 或者 regexpNULLREGEXP_INSTR() 将返回 NULL

MariaDB REGEXP_INSTR() 示例

基本示例

以下语句用来找出字符串 '123 abc 456 def' 中的第一组连续的数字的索引。

SELECT REGEXP_INSTR('123 abc 456 def', '\\d+');

输出:

+-----------------------------------------+
| REGEXP_INSTR('123 abc 456 def', '\\d+') |
+-----------------------------------------+
|                                       1 |
+-----------------------------------------+

无匹配

下面是一个没有匹配项的示例:

SELECT REGEXP_INSTR('123 abc 456 def', '\\d{5,}');

输出:

+--------------------------------------------+
| REGEXP_INSTR('123 abc 456 def', '\\d{5,}') |
+--------------------------------------------+
|                                          0 |
+--------------------------------------------+

在本示例中, 正则表达式 \\d{5,} 表示一个至少 5 个连续数字的序列, 原始字符串中不存在这样的子串,因此它返回了 0

结论

在 MariaDB 中, REGEXP_INSTR() 函数从一个字符串中搜索和指定模式匹配的子串并返回的子串的位置索引。