MySQL REGEXP_REPLACE() 函数使用指南

MySQL REGEXP_REPLACE() 函数在一个字符串中使用新内容替换一个和指定的正则表达式匹配的内容。

默认情况下, REGEXP_REPLACE() 函数执行不区分大小写的匹配。

REGEXP_REPLACE() 语法

这里是 MySQL REGEXP_REPLACE() 的语法:

REGEXP_REPLACE(str, regexp, replacement)
REGEXP_REPLACE(str, regexp, replacement, position)
REGEXP_REPLACE(str, regexp, replacement, position, occurrence)
REGEXP_REPLACE(str, regexp, replacement, position, occurrence, mode)

参数

str
必需的。一个字符串。
regexp
必需的。正则表达式。
replacement
必需的。用来替换的字符串。
position
可选的。开始搜索的起始位置。默认为从头开始。
occurrence
可选的。替换第几次匹配的内容。默认为替换所有匹配的内容。
mode
可选的。执行匹配采用的模式。

匹配模式可以使用下面值中的一个或多个:

  • c: 区分大小写
  • i: 区分大小写
  • m: 多行匹配模式
  • n: 点 . 可以匹配行结束
  • u: 仅限 unix 行结尾

如果匹配模式存在矛盾的选项,则以最右边的为准。

返回值

REGEXP_REPLACE() 函数在 str 中使用 replacement 替换和正则表达式 regexp 匹配的内容,并返回替换后的结果。

如果 str, regexp 或者 replacementNULLREGEXP_REPLACE() 将返回 NULL

REGEXP_REPLACE() 示例

这里列出了几个常见的 REGEXP_REPLACE() 示例。

示例 1

SELECT REGEXP_REPLACE('123 abc 456 def', '\\s+', '-');
+------------------------------------------------+
| REGEXP_REPLACE('123 abc 456 def', '\\s+', '-') |
+------------------------------------------------+
| 123-abc-456-def                                |
+------------------------------------------------+

这里,使用 - 替换了所有的空格。

示例 2

SELECT REGEXP_REPLACE('123 abc 456 def', '\\d+', 'X', 1, 2);
+------------------------------------------------------+
| REGEXP_REPLACE('123 abc 456 def', '\\d+', 'X', 1, 2) |
+------------------------------------------------------+
| 123 abc X def                                        |
+------------------------------------------------------+

这里,使用 X 只替换了第二次匹配的连续数字。