La funzione MySQL REGEXP_REPLACE() viene utilizzata per la corrispondenza dei modelli. Questa funzione cerca in una stringa un modello di espressione regolare e sostituisce ogni occorrenza del modello con la stringa specificata che corrisponde al modello di espressione regolare specificato. Se viene trovata la corrispondenza, restituisce l'intera stringa insieme alle sostituzioni. Se non viene trovata alcuna corrispondenza, la stringa restituita rimane invariata. Se l'espressione, i modelli e la stringa di sostituzione sono NULL, la funzione restituirà NULL.
REGEXP_REPLACE(), SOSTITUISCI(), E il TRADURRE() funzione dentro MySQL funzionano allo stesso modo, tranne per il fatto che TRANSLATE ci consente di effettuare più sostituzioni di un singolo carattere e la funzione REPLACE sostituisce un'intera stringa con un'altra stringa, mentre REGEXP_REPLACE cerca in una stringa un modello di espressione regolare.
Sintassi
Quella che segue è una sintassi di base per utilizzare questa funzione in MySQL:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Parametro Spiegazione
La spiegazione dei parametri della funzione REGEXP_REPLACE() è:
espressione: Si tratta di una stringa di input sulla quale eseguiremo la ricerca attraverso parametri e funzioni delle espressioni regolari.
modelli: Rappresenta il modello di espressione regolare per una sottostringa.
sostituisci_stringa: È una sottostringa che verrà sostituita se viene trovata la corrispondenza.
La funzione REGEXP_INSTR() utilizza vari parametri facoltativi indicati di seguito:
posizione: Viene utilizzato per specificare la posizione nell'espressione all'interno della stringa per avviare la ricerca. Se non specifichiamo questo parametro, inizierà dalla posizione 1.
occorrenza: Viene utilizzato per specificare quale occorrenza di una corrispondenza cercheremo. Se non specifichiamo questo parametro, tutte le occorrenze vengono sostituite.
tipo_corrispondenza: È una stringa che ci permette di perfezionare l'espressione regolare. Utilizza i seguenti caratteri possibili per eseguire la corrispondenza.
Cerchiamo di capirlo con vari esempi.
Esempio
La seguente istruzione spiega l'esempio di base della funzione REGEXP_REPLACE in MySQL.
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
Ecco l'output:
Supponiamo che la nostra stringa di input contenga più corrispondenze all'interno della stringa , questa funzione li sostituirà tutti. Vedere le seguenti dichiarazioni:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Ecco l'output:
Se la stringa di input e la stringa sostituibile non hanno corrispondenza, le istruzioni restituiscono la stringa originale. Vedi l'esempio seguente:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Ecco l'output:
Se vogliamo sostituire la stringa con specificando la posizione per avviare la sostituzione, possiamo utilizzare la funzione REGEX_REPLACE come segue:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
In questa dichiarazione, abbiamo specificato la posizione 2 per iniziare la sostituzione. Eseguendo questa query, otterremo l'output seguente in cui possiamo vedere che la prima posizione della stringa sostituibile non è stata sostituita.
Sappiamo che tutte le occorrenze della stringa corrispondente vengono sostituite per impostazione predefinita. Tuttavia, abbiamo anche un'opzione per specificare l'occorrenza specifica per sostituire la stringa corrispondente utilizzando il comando occorrenza parametro. Vedi l'esempio seguente:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
In questo esempio, la posizione iniziale della stringa sostituibile è 2 e viene dopo l'inizio della prima occorrenza. Pertanto, l'occorrenza 2 è diventata l'occorrenza 1 e l'occorrenza 3 è diventata l'occorrenza 2. Vedere l'output seguente:
Possiamo fornire un parametro aggiuntivo per perfezionare l'espressione regolare utilizzando gli argomenti del tipo di corrispondenza. Per esempio , possiamo usarlo per verificare se la corrispondenza fa distinzione tra maiuscole e minuscole o include terminatori di riga. Vedi l'esempio seguente in cui stiamo specificando a maiuscole e minuscole E corrispondenza senza distinzione tra maiuscole e minuscole:
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';
Ecco l'output: