logo

Funció MySQL REGEXP_REPLACE().

La funció MySQL REGEXP_REPLACE() s'utilitza per a la concordança de patrons. Aquesta funció cerca en una cadena un patró d'expressió regular i substitueix cada ocurrència del patró amb la cadena especificada que coincideix amb el patró d'expressió regular donat. Si es troba la coincidència, retorna tota la cadena juntament amb les substitucions. Si no es troba cap coincidència, la cadena retornada no es modifica. Si l'expressió, els patrons i la cadena de substitució són NULL, la funció retornarà NULL.

REGEXP_REPLACE(), REPLACE(), i el TRADUCIR () funció en MySQL funcionen igual, excepte que TRANSLATE ens permet fer múltiples substitucions d'un sol caràcter i la funció REPLACE substitueix una cadena sencera per una altra, mentre que REGEXP_REPLACE cerca una cadena per un patró d'expressió regular.

Sintaxi

La següent és una sintaxi bàsica per utilitzar aquesta funció a MySQL:

 REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]]) 

Explicació del paràmetre

L'explicació dels paràmetres de la funció REGEXP_REPLACE() són:

expressió: És una cadena d'entrada sobre la qual realitzarem la cerca a través d'expressions regulars paràmetres i funcions.

patrons: Representa el patró d'expressió regular d'una subcadena.

substitueix_cadena: És una subcadena que es substituirà si es troba la coincidència.

La funció REGEXP_INSTR() utilitza diversos paràmetres opcionals que es mostren a continuació:

pos: S'utilitza per especificar la posició de l'expressió dins de la cadena per iniciar la cerca. Si no especifiquem aquest paràmetre, començarà a la posició 1.

aparició: S'utilitza per especificar quina ocurrència d'una coincidència anem a cercar. Si no especifiquem aquest paràmetre, es substitueixen totes les ocurrències.

tipus_concordança: És una cadena que ens permet afinar l'expressió regular. Utilitza els següents caràcters possibles per fer la concordança.

    c:Representa una concordança que distingeix entre majúscules i minúscules.jo:Representa una concordança que no distingeix entre majúscules i minúscules.m:Representa un mode de múltiples línies que permet terminadors de línia dins de la cadena. Per defecte, aquesta funció coincideix amb els terminadors de línia a l'inici i al final de la cadena.n:S'utilitza per modificar el . caràcter (punt) per fer coincidir els terminadors de línia.a:Representa els finals de línia només per a Unix.

Entenem-ho amb diversos exemples.

Exemple

La declaració següent explica l'exemple bàsic de la funció REGEXP_REPLACE a MySQL.

 mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String'; 

Aquí teniu la sortida:

Funció MySQL REGEXP_REPLACE().

Suposem que la nostra cadena d'entrada conté múltiples coincidències dins de la cadena , aleshores aquesta funció els substituirà a tots. Vegeu les declaracions següents:

 mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String'; 

Aquí teniu la sortida:

Funció MySQL REGEXP_REPLACE().

Si la cadena d'entrada i la cadena substituïble no coincideixen, les sentències retornen la cadena original. Vegeu l'exemple següent:

algorisme de cabina
 mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String'; 

Aquí teniu la sortida:

Funció MySQL REGEXP_REPLACE().

Si volem substituir la cadena per especificant la posició per iniciar la substitució, podem utilitzar la funció REGEX_REPLACE de la següent manera:

 mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String'; 

En aquesta declaració, hem especificat la posició com a 2 per iniciar la substitució. Executant aquesta consulta, obtindrem la sortida següent on podem veure que la primera posició de la cadena substituïble no està substituïda.

Funció MySQL REGEXP_REPLACE().

Sabem que totes les ocurrències de la cadena coincident se substitueixen per defecte. Tanmateix, també tenim una opció per especificar l'ocurrència específica per reemplaçar la cadena coincident utilitzant el aparició paràmetre. Vegeu l'exemple següent:

 mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String'; 

En aquest exemple, la posició inicial de la cadena substituïble és 2 que va arribar després que s'hagués iniciat la primera ocurrència. Per tant, l'ocurrència 2 es va convertir en l'ocurrència 1 i l'ocurrència 3 es va convertir en l'ocurrència 2. Vegeu la sortida següent:

Funció MySQL REGEXP_REPLACE().

Podem proporcionar un paràmetre addicional per refinar l'expressió regular utilitzant els arguments del tipus de concordança. Per exemple , el podem utilitzar per verificar si la coincidència distingeix entre majúscules i minúscules o inclou terminadors de línia. Vegeu l'exemple següent on estem especificant a cas delicat i concordança sense distinció entre majúscules i minúscules:

 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'; 

Aquí teniu la sortida:

Funció MySQL REGEXP_REPLACE().