MySQL REGEXP_REPLACE() 函数

17 Mar 2025 | 4 分钟阅读

MySQL REGEXP_REPLACE() 函数用于模式匹配。该函数 **在一个字符串中搜索正则表达式模式,并将所有匹配到的模式替换为指定的字符串**。如果找到匹配,则返回带有替换项的整个字符串。如果未找到匹配,则返回的字符串将保持不变。如果表达式、模式和替换字符串为 NULL,则函数将返回 NULL。

MySQL 中的 **REGEXP_REPLACE()、REPLACE()** 和 **TRANSLATE()** 函数的用法基本相同,不同之处在于 TRANSLATE 允许我们进行多个单字符替换,REPLACE 函数将一个整个字符串替换为另一个字符串,而 REGEXP_REPLACE 则搜索字符串中的正则表达式模式。

语法

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

参数解释

REGEXP_REPLACE() 函数参数的解释如下:

expression: 这是输入字符串,我们将在其中使用正则表达式参数和函数进行搜索。

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

replace_string: 如果找到匹配项,则这是将被替换的子字符串。

REGEXP_INSTR() 函数使用各种可选参数,如下所示:

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

occurrence: 用于指定要搜索的匹配项的哪个出现次数。如果我们不指定此参数,则替换所有出现次数。

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

  • c: 表示区分大小写的匹配。
  • i: 表示不区分大小写的匹配。
  • m: 表示多行模式,允许字符串中的行终止符。默认情况下,此函数匹配字符串的开头和结尾的行终止符。
  • n: 用于修改 . (点) 字符以匹配行终止符。
  • u: 表示仅 Unix 行结束符。

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

示例

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

这是输出

MySQL REGEXP_REPLACE() Function

假设我们的输入字符串包含 **字符串中的多个匹配项**,那么此函数将替换所有这些匹配项。请参见下面的语句:

这是输出

MySQL REGEXP_REPLACE() Function

如果输入字符串和可替换字符串没有匹配项,则语句返回原始字符串。请参见下面的示例:

这是输出

MySQL REGEXP_REPLACE() Function

如果我们要通过 **指定开始替换的位置** 来替换字符串,可以使用 REGEX_REPLACE 函数,如下所示:

在此语句中,我们将开始替换的位置指定为 2。执行此查询后,我们将看到如下输出,其中我们可以看到可替换字符串的第一个位置未被替换。

MySQL REGEXP_REPLACE() Function

我们知道默认情况下会替换匹配字符串的所有出现项。但是,我们也可以通过使用 **occurrence** 参数选择性地指定要替换的特定出现项。请参见下面的示例:

在此示例中,可替换字符串的起始位置为 2,该位置在第一个出现项开始后出现。因此,第二个出现项变成了第一个出现项,第三个出现项变成了第二个出现项。请参见下面的输出:

MySQL REGEXP_REPLACE() Function

通过使用匹配类型参数,我们可以提供一个额外的参数来细化正则表达式。**例如**,我们可以使用它来验证匹配是区分大小写的还是包含行终止符。请参见下面的示例,我们在其中指定 **区分大小写** 和 **不区分大小写** 的匹配:

这是输出

MySQL REGEXP_REPLACE() Function