MySQL REGEXP_REPLACE() 函数用于模式匹配。此函数在字符串中搜索正则表达式模式,并用与给定正则表达式模式匹配的指定字符串替换该模式的每个匹配项。如果找到匹配项,它会返回整个字符串以及替换项。如果未找到匹配项,则返回的字符串保持不变。如果表达式、模式和替换字符串为 NULL,则函数将返回 NULL。
REGEXP_REPLACE()、REPLACE()和MySQL中的TRANSLATE()函数是一样的,只是TRANSLATE允许我们进行多个单字符替换,REPLACE函数用另一个字符串替换一个完整的字符串,而REGEXP_REPLACE搜索一个字符串来寻找正则表达式模式.
用法
以下是在 MySQL 中使用此函数的基本语法:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
参数说明
REGEXP_REPLACE() 函数参数的解释是:
expression:它是一个输入字符串,我们将通过正则表达式参数和函数对其进行搜索。
patterns:它表示子字符串的正则表达式模式。
replace_string:如果找到匹配项,将被替换的子字符串。
REGEXP_INSTR() 函数使用下面给出的各种可选参数:
pos:它用于指定字符串中表达式中的位置以开始搜索。如果我们不指定此参数,它将从位置 1 开始。
occurrence:它用于指定我们要搜索的匹配项。如果我们不指定这个参数,所有出现的都会被替换。
match_type:它是一个字符串,可以让我们细化正则表达式。它使用以下可能的字符来执行匹配。
- c:它表示区分大小写的匹配。
- i:它表示不区分大小写的匹配。
- m:它代表 multiple-line 模式,允许在字符串中使用行终止符。默认情况下,此函数匹配字符串开头和结尾的行终止符。
- n:它用于修改 . (点)字符来匹配行终止符。
- u:它代表 Unix-only 行结尾。
让我们通过各种例子来理解它。
示例
以下语句解释了 MySQL 中 REGEXP_REPLACE 函数的基本示例。
mysql> SET @str = 'Javatpoint is a great websites';
mysql> SELECT @str AS 'Original String',
REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
这是输出:
假设我们的输入字符串在字符串中包含多个匹配项,那么此函数将替换所有匹配项。请参阅以下声明:
mysql> SET @str = 'BCA MCA BBA BCA BBA';
mysql> SELECT @str AS 'Original String',
REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
这是输出:
如果输入字符串和可替换字符串不匹配,则语句返回原始字符串。请参阅以下示例:
mysql> SET @str = 'BCA MCA BBA BCA BBA';
mysql> SELECT @str AS 'Original String',
REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
这是输出:
如果我们想通过指定开始替换的位置来替换字符串,我们可以使用 REGEX_REPLACE 函数,如下所示:
mysql> SET @str = 'BBA BCA BBA BCA BBA';
mysql> SELECT @str AS 'Original String',
REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
在此语句中,我们将位置指定为 2 以开始替换。执行这个查询,我们将得到下面的输出,我们可以看到可替换字符串的第一个位置没有被替换。
我们知道所有出现的匹配字符串都会被默认替换。但是,我们也有一个选项来指定使用发生参数替换匹配字符串的特定事件。请参阅以下示例:
mysql> SET @str = 'BBA BCA BBA BCA BBA';
mysql> SELECT @str AS 'Original String',
REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
在此示例中,可替换字符串的起始位置是在第一次出现之后出现的 2。因此,事件 2 成为事件 1,事件 3 成为事件 2。请参阅以下输出:
我们可以提供一个额外的参数来使用匹配类型参数来细化正则表达式。例如,我们可以使用它来验证匹配是否区分大小写或包含行终止符。请参阅以下示例,其中我们指定了区分大小写和不区分大小写的匹配:
mysql> SET @str = 'BBA BCA BBA BCA BBA';
mysql> SELECT @str AS 'Original String',
REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'c') AS ' Case-Sensitive',
REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'i') AS ' Case-Insensitive';
这是输出:
相关用法
- MySQL REGEXP_SUBSTR()用法及代码示例
- MySQL REGEXP_INSTR()用法及代码示例
- MySQL REPEAT()用法及代码示例
- MySQL REPLACE()用法及代码示例
- MySQL REVERSE()用法及代码示例
- MySQL ROUND()用法及代码示例
- MySQL RPAD()用法及代码示例
- MySQL ROW_NUMBER()用法及代码示例
- MySQL RIGHT()用法及代码示例
- MySQL RADIANS()用法及代码示例
- MySQL RAND()用法及代码示例
- MySQL RTRIM()用法及代码示例
- MySQL POWER()用法及代码示例
- MySQL LEAD() and LAG()用法及代码示例
- MySQL IS_IPV4()用法及代码示例
- MySQL WEEK()用法及代码示例
- MySQL CHARACTER_LENGTH()用法及代码示例
- MySQL CURTIME()用法及代码示例
- MySQL weekofyear()用法及代码示例
注:本文由纯净天空筛选整理自 MySQL REGEXP_REPLACE() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。