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
或者 replacement
为 NULL
,REGEXP_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
只替换了第二次匹配的连续数字。