Funcția MySQL REGEXP_REPLACE() este utilizată pentru potrivirea modelelor. Această funcție caută într-un șir un model de expresie regulată și înlocuiește fiecare apariție a modelului cu șirul specificat care se potrivește cu modelul de expresie regulată dat. Dacă se găsește potrivirea, returnează întregul șir împreună cu înlocuitorii. Dacă nu se găsește nicio potrivire, șirul returnat rămâne neschimbat. Dacă expresia, modelele și șirul de înlocuire sunt NULL, funcția va returna NULL.
REGEXP_REPLACE(), REPLACE(), și TRANSLATE() functioneaza in MySQL funcționează la fel, cu excepția faptului că TRANSLATE ne permite să facem mai multe substituții cu un singur caracter și funcția REPLACE înlocuiește un șir întreg cu un alt șir, în timp ce REGEXP_REPLACE caută un șir pentru un model de expresie regulată.
Sintaxă
Următoarea este o sintaxă de bază pentru a utiliza această funcție în MySQL:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Explicația parametrului
Explicația parametrilor funcției REGEXP_REPLACE() sunt:
expresie: Este un șir de intrare pe care vom efectua căutarea prin parametrii și funcțiile expresiilor regulate.
modele: Reprezintă modelul de expresie regulată pentru un subșir.
înlocuiți șir: Este un subșir care va fi înlocuit dacă se găsește potrivirea.
vba
Funcția REGEXP_INSTR() utilizează diverși parametri opționali care sunt dați mai jos:
poz: Este folosit pentru a specifica poziția în expresie în cadrul șirului pentru a începe căutarea. Dacă nu specificăm acest parametru, acesta va începe de la poziția 1.
apariție: Este folosit pentru a specifica ce apariție a unei potriviri vom căuta. Dacă nu specificăm acest parametru, toate aparițiile sunt înlocuite.
tip_potrivire: Este un șir care ne permite să rafinăm expresia regulată. Utilizează următoarele caractere posibile pentru a efectua potrivirea.
Să-l înțelegem cu diverse exemple.
java inversând un șir
Exemplu
Următoarea declarație explică exemplul de bază al funcției REGEXP_REPLACE din MySQL.
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
Iată rezultatul:
Să presupunem că șirul nostru de intrare conține potriviri multiple în cadrul șirului , atunci această funcție le va înlocui pe toate. Vezi declarațiile de mai jos:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Iată rezultatul:
Dacă șirul de intrare și șirul înlocuibil nu au nicio potrivire, instrucțiunile returnează șirul original. Vezi exemplul de mai jos:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Iată rezultatul:
Dacă vrem să înlocuim șirul cu precizând poziţia pentru a începe înlocuirea, putem folosi funcția REGEX_REPLACE după cum urmează:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
În această declarație, am specificat poziția ca 2 pentru a începe înlocuirea. Executând această interogare, vom obține rezultatul de mai jos, unde putem vedea că prima poziție a șirului înlocuibil nu este înlocuită.
Știm că toate aparițiile șirului de potrivire sunt înlocuite implicit. Cu toate acestea, avem și o opțiune de a specifica apariția specifică pentru înlocuirea șirului de potrivire folosind apariția parametru. Vezi exemplul de mai jos:
cheie primară compusă
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
În acest exemplu, poziția de pornire a șirului înlocuibil este 2 care a venit după ce a început prima apariție. Prin urmare, apariția 2 a devenit apariția 1, iar apariția 3 a devenit apariția 2. Vedeți rezultatul de mai jos:
Putem furniza un parametru suplimentar pentru a rafina expresia regulată utilizând argumentele tipului de potrivire. De exemplu , îl putem folosi pentru a verifica dacă potrivirea este sensibilă la majuscule sau include terminatori de linie. Vezi exemplul de mai jos în care specificăm a caz sensibil și potrivire fără majuscule:
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';
Iată rezultatul: