當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


MySQL REGEXP_REPLACE方法用法及代碼示例

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

意義

c

區分大小寫的匹配。

i

不區分大小寫的匹配。

m

Multiple-line模式。識別字符串中的行終止符。默認行為是僅在字符串表達式的開頭和結尾匹配行終止符。

n

. 字符匹配行終止符。默認情況下,. 匹配在行尾停止。

u

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                             |
+--------+----------------------------------+

請注意,學生姓氏中的所有 ae 字符現已替換為 %

位置

僅從位置 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'

相關用法


注:本文由純淨天空篩選整理自Arthur Yanagisawa大神的英文原創作品 MySQL | REGEXP_REPLACE method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。