MySQL 的 REGEXP_REPLACE(~)
方法返回輸入字符串 expr
,其中所有與正則表達式 pat
匹配的匹配項都被新的子字符串 repl
替換。
參數
1. expr
| string
要執行正則表達式匹配和替換的字符串。
2. pat
| regular expression
用於匹配的正則表達式模式。
3. repl
| string
用於替換 expr
中與正則表達式模式匹配的匹配項的子字符串。
4. pos
| integer
| optional
expr
中開始搜索的位置。默認為 1
。
5. occurrence
| number
| optional
要替換哪個匹配項出現。默認為0
(所有出現的情況)。
6. match_type
| string
| optional
指定如何執行匹配。可以指定多個字符,但是,如果提供的match_types
之間存在矛盾,則右側的match_type
優先。
match_type |
意義 |
---|---|
|
區分大小寫的匹配。 |
|
不區分大小寫的匹配。 |
|
Multiple-line模式。識別字符串中的行終止符。默認行為是僅在字符串表達式的開頭和結尾匹配行終止符。 |
|
|
|
Unix-only 行結尾。僅換行符被識別為以 |
例子
考慮下表有關一些學生的信息:
student_id |
名稱 |
名字 |
day_enrolled |
年齡 |
用戶名 |
---|---|---|---|---|---|
1 |
Sky |
Towner |
2015-12-03 |
17 |
stowner1 |
2 |
Ben |
Davis |
2016-04-20 |
19 |
bdavis2 |
3 |
Travis |
Apple |
2018-08-14 |
18 |
tapple3 |
4 |
Arthur |
David |
2016-04-01 |
16 |
adavid4 |
5 |
Benjamin |
Town |
2014-01-01 |
17 |
btown5 |
可以使用此處的代碼創建上表。
基本用法
要將學生姓氏中出現的所有 [ae]
正則表達式匹配替換為 '%'
:
SELECT lname, REGEXP_REPLACE(lname, '[ae]', '%')
FROM students;
+--------+----------------------------------+
| lname | REGEXP_REPLACE(lname,'[ae]','%') |
+--------+----------------------------------+
| Towner | Town%r |
| Davis | D%vis |
| Apple | %ppl% |
| David | D%vid |
| Town | Town |
+--------+----------------------------------+
請注意,學生姓氏中的所有 a
和 e
字符現已替換為 %
。
位置
僅從位置 4
開始正則表達式匹配:
SELECT REGEXP_REPLACE('abcdefghi', '[a-z]', 'X', 4, 0, 'c');
+------------------------------------------------------+
| REGEXP_REPLACE('abcdefghi', '[a-z]', 'X', 4, 0, 'c') |
+------------------------------------------------------+
| abcXXXXXX |
+------------------------------------------------------+
請注意我們如何僅從位置 4
開始替換(由原始字符串 'abcdefghi'
中的 d
占據)。
出現次數
要替換第二次出現的匹配:
SELECT REGEXP_REPLACE('abc def ghi', '[a-z]', 'X', 1, 2, 'c');
+--------------------------------------------------------+
| REGEXP_REPLACE('abc def ghi', '[a-z]', 'X', 1, 2, 'c') |
+--------------------------------------------------------+
| aXc def ghi |
+--------------------------------------------------------+
請注意我們如何僅替換第二次出現的正則表達式匹配(原始字符串 'abc def ghi'
中的 'b'
)。
比賽類型
要執行區分大小寫的匹配:
SELECT REGEXP_REPLACE('abc DEF ghi', '[a-z]+', 'X', 1, 0, 'c');
+---------------------------------------------------------+
| REGEXP_REPLACE('abc DEF ghi', '[a-z]+', 'X', 1, 0, 'c') |
+---------------------------------------------------------+
| X DEF X |
+---------------------------------------------------------+
請注意,當我們指定 'c'
的 match_type
時,'DEF'
不會被替換為 'X'
。如果我們指定了 match_type
或 'i'
(不區分大小寫),我們將返回 'X X X'
。
相關用法
- MySQL REGEXP_REPLACE()用法及代碼示例
- MySQL REGEXP_INSTR()用法及代碼示例
- MySQL REGEXP_SUBSTR()用法及代碼示例
- MySQL REGEXP_INSTR方法用法及代碼示例
- MySQL REGEXP_LIKE方法用法及代碼示例
- MySQL REGEX用法及代碼示例
- MySQL REPEAT()用法及代碼示例
- MySQL REPLACE()用法及代碼示例
- MySQL REPEAT方法用法及代碼示例
- MySQL REPLACE方法用法及代碼示例
- MySQL REVERSE()用法及代碼示例
- MySQL REVERSE方法用法及代碼示例
- MySQL ROUND()用法及代碼示例
- MySQL RADIANS方法用法及代碼示例
- MySQL RPAD()用法及代碼示例
- MySQL RLIKE用法及代碼示例
- MySQL RIGHT JOIN用法及代碼示例
- MySQL ROW_NUMBER()用法及代碼示例
- MySQL RTRIM方法用法及代碼示例
- MySQL RIGHT()用法及代碼示例
- MySQL RADIANS()用法及代碼示例
- MySQL ROUND方法用法及代碼示例
- MySQL RAND()用法及代碼示例
- MySQL RIGHT方法用法及代碼示例
- MySQL RPAD方法用法及代碼示例
注:本文由純淨天空篩選整理自Arthur Yanagisawa大神的英文原創作品 MySQL | REGEXP_REPLACE method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。