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 只替换了第二次匹配的连续数字。