MariaDB функция REGEXP_REPLACE

В этом учебном пособии вы узнаете, как использовать MariaDB функцию REGEXP_REPLACE с синтаксисом и примерами.

Описание

MariaDB функция REGEXP_REPLACE является расширением функции REPLACE. Эта функция, представленная в MariaDB 10.0.5, позволит вам заменить все вхождения подстроки в строке, используя сопоставление с образцом регулярного выражения.

Синтаксис

Синтаксис функции REGEXP_REPLACE в MariaDB:

REGEXP_REPLACE( string, pattern, replacement )

Параметры или аргументы

string
Строка для поиска.
pattern
Информация о совпадении регулярного выражения. Это может быть сочетание следующего:

Значение Описание
^ Соответствует началу строки. Если используется с match_parameter, равным 'm', он соответствует началу строки в любом месте expression.
$ Соответствует концу строки. Если используется с match_parameter, равным 'm', он совпадает с концом строки в любом месте внутри expression.
* Совпадает с нулем или более вхождений.
+ Соответствует одному или нескольким вхождениям.
? Соответствует нулю или одному вхождению.
. Соответствует любому символу, кроме NULL.
| Используется как OR указать более одной альтернативы.
[ ] Используется для указания списка совпадений, в котором вы пытаетесь сопоставить любой из символов в списке.
[^ ] Используется для указания несоответствующего списка, в котором вы пытаетесь сопоставить любой символ, кроме тех, что в списке.
( ) Используется для группировки выражений как подвыражения.
{m} Соответствует m раз.
{m,} Совпадает не менее m раз.
{m,n} Соответствует не менее m раз, но не более n раз.
\n n - это число от 1 до 9. Соответствует n-му подвыражению, найденному в () перед тем, как встретить \n.
[..] Соответствует одному элементу сопоставления, который может содержать более одного символа.
[::] Соответствует классу символов.
[==] Соответствует классу эквивалентности.
\d Соответствует цифровому символу.
\D Соответствует нецифровому символу.
\w Соответствует буквенному символу.
\W Соответствует небуквенному символу.
\s Соответствует пробелу.
\S Соответствует непробельному символу.
*? Соответствует предыдущему шаблону ноль или более вхождений.
+? Соответствует предыдущему шаблону одному или нескольким вхождениям.
?? Соответствует предыдущему шаблону ноль или одно вхождение.
{n}? Соответствует предыдущему шаблону n раз.
{n,}? Соответствует предыдущему шаблону не менее n раз.
{n,m}? Соответствует предыдущему шаблону не менее n раз, но не более m раз.
replacement
Замена подстроки. Все вхождения pattern, найденные в string, заменяются на replacement.

Примечание

  • Если функция REGEXP_REPLACE не находит вхождения pattern, она вернет исходную строку без каких-либо изменений.
  • Эта страница относится к MariaDB 10.0.5 и выше, использующим библиотеку регулярных выражений PCRE.
  • См. также функцию REPLACE.

Применение

Функция REGEXP_REPLACE может использоваться в следующих версиях MariaDB:

  • MariaDB 10.0.5+

Пример совпадение на нескольких альтернативах

Давайте начнем с рассмотрения того, как использовать шаблон | с функцией REGEXP_REPLACE в MariaDB.
Например:

Эти примеры REGEXP_REPLACE заменят все вхождения букв 'a', 'e', 'o' или 'i' в строке 'Google.com' на '8'. Функция REGEXP_REPLACE выполняет поиск без учета регистра, поэтому не имеет значения, является ли 'a', 'e', 'o' или 'i' значениями в верхнем или нижнем регистре.

Поиск с учетом регистра

Если мы хотим выполнить поиск с учетом регистра, нам нужно изменить нашу функцию REGEXP_REPLACE для использования двоичной строки. Это можно сделать с помощью шаблона (?-i).

В этом примере мы использовали шаблон (?-i), чтобы заставить функцию REGEXP_REPLACE выполнять сопоставление с учетом регистра. Так что теперь символ "O" в верхнем регистре в 'The Show Mast Go On' не заменяется на "8".

Поиск столбцов таблицы

Теперь давайте покажем, как использовать функцию REGEXP_REPLACE со столбцом таблицы:
Допустим, у нас есть таблица contact со следующими данными:

contact_id last_name
1000 Андерсон
2000 Смит
3000 Джонсон

Теперь запустим следующий запрос:

Это результаты, которые будут возвращены запросом:

contact_id last_name Result
1000 Андерсон zндzрсzн
2000 Смит Смzт
3000 Джонсон Джzнсzн

Пример совпадение по словам

Далее давайте рассмотрим, как использовать функцию REGEXP_REPLACE для замены первого слова в строке.
Например:

В этом примере будет возвращено 'Google.com is a great resource', поскольку он заменит все непробельные символы, как указано в (\\S*), и остановится, когда попадет в первый символ пробела (т.е.: пробел ). Это приведет к замене слова "Yandex.com" на "Google.com".

Пример совпадение по цифровым символам

Теперь давайте посмотрим, как мы будем использовать функцию REGEXP_REPLACE для сопоставления с шаблоном цифр.
Например:

В этом примере числовые цифры в строке будут заменены на "abc". как указано в \\d. В этом случае он будет совпадать с номерами 7, 8 и 15.
Мы могли бы изменить наш шаблон, чтобы заменить только двузначные числа.
Например:

В этом примере все двузначные числа будут заменены на 'abc', как указано в (\\d)(\\d). В этом случае он пропустит числовые значения 7 и 8 и заменит только число 15.
Теперь давайте посмотрим, как мы будем использовать функцию REGEXP_REPLACE со столбцом таблицы и искать двузначное число.
Например:

В этом примере мы собираемся удалить все числа из поля address в таблице contacts. Это делается путем поиска всех чисел с использованием \\d и замены на "".