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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。