Do dopasowywania wzorców używana jest funkcja MySQL REGEXP_REPLACE(). Ta funkcja przeszukuje ciąg znaków w poszukiwaniu wzorca wyrażenia regularnego i zastępuje każde wystąpienie wzorca z określonym ciągiem pasującym do podanego wzorca wyrażenia regularnego. Jeśli dopasowanie zostanie znalezione, zwraca cały ciąg znaków wraz z zamiennikami. Jeśli nie zostanie znalezione żadne dopasowanie, zwrócony ciąg znaków pozostaje niezmieniony. Jeśli wyrażenie, wzorce i ciąg zastępczy mają wartość NULL, funkcja zwróci wartość NULL.
REGEXP_REPLACE(), ZAMIEŃ(), I PRZETŁUMACZ() funkcjonować w MySQL'a działają tak samo, z tą różnicą, że TRANSLATE pozwala nam na dokonywanie wielu jednoznakowych podstawień, a funkcja REPLACE zastępuje cały ciąg innym ciągiem, podczas gdy REGEXP_REPLACE wyszukuje w ciągu znaków wzorzec wyrażenia regularnego.
Składnia
Poniżej znajduje się podstawowa składnia korzystania z tej funkcji w MySQL:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Wyjaśnienie parametrów
Wyjaśnienie parametrów funkcji REGEXP_REPLACE() jest następujące:
wyrażenie: Jest to ciąg wejściowy, po którym będziemy przeszukiwać parametry i funkcje wyrażeń regularnych.
lista tworzenia Java
wzory: Reprezentuje wzorzec wyrażenia regularnego dla podciągu.
zamień_ciąg: Jest to podciąg, który zostanie zastąpiony w przypadku znalezienia dopasowania.
Funkcja REGEXP_INSTR() wykorzystuje różne opcjonalne parametry podane poniżej:
pozycja: Służy do określenia pozycji w wyrażeniu w ciągu znaków, aby rozpocząć wyszukiwanie. Jeśli nie określimy tego parametru, zacznie on od pozycji 1.
występowanie: Służy do określenia, dla jakiego wystąpienia dopasowania będziemy szukać. Jeśli nie określimy tego parametru, zastąpione zostaną wszystkie wystąpienia.
typ_dopasowania: Jest to ciąg znaków, który pozwala nam udoskonalić wyrażenie regularne. Do dopasowania używa następujących możliwych znaków.
kolejne typy danych
Wyjaśnijmy to na różnych przykładach.
Przykład
Poniższa instrukcja wyjaśnia podstawowy przykład funkcji REGEXP_REPLACE w MySQL.
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
Oto dane wyjściowe:
Załóżmy, że nasz ciąg wejściowy zawiera wiele dopasowań w ciągu , to ta funkcja zastąpi je wszystkie. Zobacz poniższe stwierdzenia:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Oto dane wyjściowe:
Jeśli ciąg wejściowy i ciąg wymienny nie są zgodne, instrukcje zwracają oryginalny ciąg. Zobacz poniższy przykład:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Oto dane wyjściowe:
ile lat ma Pete Davidson
Jeśli chcemy zastąpić ciąg przez określenie stanowiska aby rozpocząć zamianę, możemy użyć funkcji REGEX_REPLACE w następujący sposób:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
W tym zestawieniu określiliśmy pozycję jako 2, aby rozpocząć wymianę. Wykonując to zapytanie, otrzymamy poniższy wynik, w którym możemy zobaczyć, że pierwsza pozycja ciągu wymiennego nie została zastąpiona.
Wiemy, że wszystkie wystąpienia pasującego ciągu są domyślnie zastępowane. Jednakże mamy również opcję określenia konkretnego wystąpienia zastępującego pasujący ciąg za pomocą występowanie parametr. Zobacz poniższy przykład:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
W tym przykładzie pozycją początkową ciągu wymiennego jest 2, która pojawiła się po rozpoczęciu pierwszego wystąpienia. Zatem zdarzenie 2 stało się zdarzeniem 1, a zdarzenie 3 stało się zdarzeniem 2. Zobacz poniższe dane wyjściowe:
Możemy podać dodatkowy parametr w celu uściślenia wyrażenia regularnego za pomocą argumentów typu dopasowania. Na przykład , możemy go użyć do sprawdzenia, czy w dopasowaniu uwzględniana jest wielkość liter lub czy uwzględniane są terminatory linii. Zobacz poniższy przykład, w którym określamy a wielkość liter ma znaczenie I dopasowanie bez uwzględniania wielkości liter:
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';
Oto dane wyjściowe: