MySQL REGEXP_SUBSTR() 函数

17 Mar 2025 | 4 分钟阅读

MySQL 中的 REGEXP_SUBSTR() 函数用于模式匹配。此函数 **从输入字符串中返回与给定正则表达式匹配的子字符串**。如果没有找到匹配项,则返回 NULL。如果表达式或模式为 NULL,则函数返回 NULL。

REGEXP_SUBSTR() 函数与 SUBSTRING 函数相同,但它不像 SUBSTRING 函数那样只提取给定的子字符串,而是允许我们使用正则表达式模式来搜索字符串。

语法

以下是在 MySQL 中使用此函数的基本语法

参数解释

REGEXP_SUBSTR() 函数参数说明如下:

expression: 这是我们将在其中通过正则表达式执行搜索的输入字符串。

pattern: 它代表子字符串的正则表达式模式。

REGEXP_SUBSTR() 函数还使用可选参数,如下所示:

pos: 用于指定在字符串中的 expression 的哪个位置开始搜索。如果我们省略此参数,则从位置 1 开始。

occurrence: 用于指定我们要搜索匹配的第几次出现。如果我们省略此参数,则使用第一次出现。

match_type: 这是一个字符串,允许我们细化正则表达式。它使用以下字符执行匹配:

  • c: 表示区分大小写的匹配。
  • i: 表示不区分大小写的匹配。
  • E: 用于使用子表达式提取子字符串。
  • m: 表示多行模式,可以识别字符串中的换行符。默认情况下,此函数匹配字符串开头和结尾的换行符。
  • n: 用于修改 . (点) 字符以匹配换行符。默认情况下,它会在行尾停止。
  • u: 表示仅限 Unix 的换行符,它只识别 .、^ 和 $ 匹配运算符的换行符。

让我们通过几个示例来理解它。

示例

以下语句解释了 MySQL 中 REGEXP_SUBSTR 函数的基本示例。

该语句找到匹配项并返回以下输出:

MySQL regexp_substr Function

假设输入字符串中有多个匹配项。在这种情况下,默认情况下将返回匹配子字符串的第一次出现。但是,如果需要,我们也可以指定其他出现次数。请参见下面的语句:

该语句找到匹配项,并返回匹配子字符串的第一次出现,因为我们没有指定任何特定的出现次数。请参见下面的输出:

MySQL regexp_substr Function

如果输入字符串和模式(子字符串)字符串没有匹配项,此函数将返回 NULL 值。请参见下面的示例:

这是输出

MySQL regexp_substr Function

如果我们想通过指定起始位置来返回子字符串,我们可以按如下方式使用 REGEX_SUBSTR 函数:

在此语句中,我们将起始位置指定为 2。执行此查询后,我们将获得以下输出,可以看到匹配子字符串的第一个位置未返回。

MySQL regexp_substr Function

让我们看另一个例子来更清楚地理解它:

这是输出

MySQL regexp_substr Function

如果我们想指定返回匹配子字符串的特定出现次数,我们可以按如下方式使用此函数:

在此示例中,我们将匹配子字符串的起始位置指定为 1,并将匹配子字符串的出现次数指定为 3。因此,我们将获得以下输出:

MySQL regexp_substr Function

这是另一个示例,其中我们将起始位置指定为 2,并将出现次数指定为 1、2 和 3。

此函数将给出以下输出,因为起始位置发生在第一次出现开始之后。因此,此函数将出现次数 2 视为出现次数 1,将出现次数 3 视为出现次数 2。然后没有找到更多出现次数,因此出现次数 3 的结果变为 NULL。

MySQL regexp_substr Function

我们可以提供一个附加参数来使用匹配类型参数来精炼正则表达式。**例如**,我们可以使用它来验证匹配是否区分大小写或是否包含换行符。请参见下面的示例,我们在其中指定了区分大小写和不区分大小写的匹配:

这是输出

MySQL regexp_substr Function
下一主题MySQL全文搜索