logo

MySQL REGEXP_REPLACE() Funktion

Funktionen MySQL REGEXP_REPLACE() bruges til mønstermatchning. Denne funktion søger i en streng efter et regulært udtryksmønster og erstatter hver forekomst af mønsteret med den angivne streng, der matcher det givne regulære udtryksmønster. Hvis matchen findes, returnerer den hele strengen sammen med erstatningerne. Hvis der ikke findes noget match, er den returnerede streng uændret. Hvis udtrykket, mønstrene og erstatningsstrengen er NULL, vil funktionen returnere NULL.

REGEXP_REPLACE(), REPLACE(), og TRANSLATE() fungere i MySQL er fungerer som det samme, bortset fra at TRANSLATE tillader os at lave flere enkelttegnserstatninger, og REPLACE-funktionen erstatter en hel streng med en anden streng, mens REGEXP_REPLACE søger i en streng efter et regulært udtryksmønster.

Syntaks

Følgende er en grundlæggende syntaks for at bruge denne funktion i MySQL:

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

Parameterforklaring

Forklaringen af ​​REGEXP_REPLACE() funktionsparametrene er:

udtryk: Det er en inputstreng, som vi vil udføre søgning på gennem regulære udtryks parametre og funktioner.

mønstre: Det repræsenterer det regulære udtryksmønster for en understreng.

erstatte_streng: Det er en understreng, der vil blive erstattet, hvis matchen findes.

REGEXP_INSTR()-funktionen bruger forskellige valgfrie parametre, der er angivet nedenfor:

pos: Det bruges til at angive positionen i udtrykket i strengen for at starte søgningen. Hvis vi ikke angiver denne parameter, starter den ved position 1.

Hændelse: Det bruges til at angive, hvilken forekomst af et match vi skal søge efter. Hvis vi ikke angiver denne parameter, erstattes alle forekomster.

match_type: Det er en streng, der giver os mulighed for at forfine det regulære udtryk. Den bruger følgende mulige tegn til at udføre matchning.

    c:Det repræsenterer en case-sensitiv matching.jeg:Det repræsenterer en matching, der ikke er følsom over for store og små bogstaver.m:Det repræsenterer en multi-line mode, der tillader linjeterminatorer i strengen. Som standard matcher denne funktion linjeterminatorer i starten og slutningen af ​​strengen.n:Det bruges til at ændre . (dot) tegn for at matche linjeterminatorer.i:Det repræsenterer Unix-kun linjeafslutninger.

Lad os forstå det med forskellige eksempler.

Eksempel

Følgende sætning forklarer det grundlæggende eksempel på REGEXP_REPLACE-funktionen i MySQL.

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

Her er outputtet:

MySQL REGEXP_REPLACE() Funktion

Antag, at vores inputstreng indeholder flere matches i strengen , så vil denne funktion erstatte dem alle. Se nedenstående udsagn:

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

Her er outputtet:

MySQL REGEXP_REPLACE() Funktion

Hvis inputstrengen og den udskiftelige streng ikke matcher, returnerer sætningerne den oprindelige streng. Se nedenstående eksempel:

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

Her er outputtet:

MySQL REGEXP_REPLACE() Funktion

Hvis vi vil erstatte strengen med angivelse af stillingen for at starte udskiftningen kan vi bruge REGEX_REPLACE-funktionen som følger:

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

I denne erklæring har vi angivet positionen som 2 for at starte udskiftningen. Ved at udføre denne forespørgsel får vi nedenstående output, hvor vi kan se, at den første position af den udskiftelige streng ikke er erstattet.

MySQL REGEXP_REPLACE() Funktion

Vi ved, at alle forekomster af den matchende streng erstattes som standard. Vi har dog også en mulighed for at angive den specifikke forekomst for at erstatte den matchende streng ved at bruge Hændelse parameter. Se nedenstående eksempel:

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

I dette eksempel er startpositionen for den udskiftelige streng 2, der kom efter den første forekomst var startet. Derfor blev forekomst 2 til forekomst 1, og forekomst 3 blev til forekomst 2. Se nedenstående output:

MySQL REGEXP_REPLACE() Funktion

Vi kan give en ekstra parameter til at forfine det regulære udtryk ved at bruge matchtype-argumenterne. For eksempel , kan vi bruge det til at verificere, om matchet skelner mellem store og små bogstaver eller inkluderer linjeterminatorer. Se nedenstående eksempel, hvor vi specificerer en case-sensitive og match uafhængig af store og små bogstaver:

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

Her er outputtet:

MySQL REGEXP_REPLACE() Funktion