MariaDB функция REGEXP_SUBSTR

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

Описание

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

Синтаксис

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

REGEXP_SUBSTR( string, pattern )

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

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 раз.

Примечание

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

Применение

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

  • MariaDB 10.0.5+

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

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

Эти примеры REGEXP_SUBSTR будут возвращать значения, такие как Pan, Pen или Pin. Шаблон | говорит нам искать букву 'a', 'e' или 'i'; между буквами 'P' и 'n'. Функция REGEXP_SUBSTR выполняет поиск без учета регистра, поэтому не имеет значения, в каком регистре буквы находятся в строке.

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

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

Или

В первом примере мы использовали ключевое слово BINARY, чтобы преобразовать нашу строку в двоичную строку. Во втором примере мы использовали COLLATE для преобразования нашей строки в двоичную строку.
Поскольку мы выполняем поиск с учетом регистра, шаблон не совпадает на 'pancakes', потому что ему требуется заглавная буква 'P', поэтому функция REGEXP_SUBSTR будет возвращать NULL.

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

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


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

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

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


cоntact_id last_name First Vowel
1000 Андерсон A
2000 Смит и
3000 Джонсон о

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

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

В этом примере будет возвращено 'Oracleplsql', поскольку он извлечет все непробельные символы, как указано в (\\S*), и остановится, когда достигнет первого символа пробела (т.о. пробел). Это приведет к тому, что будет возвращено слово 'Oracleplsql' .
Если вы хотите вернуть первые два слова из строки, мы можем изменить пример следующим образом:

Этот пример извлечет первые два слова из строки. (\\S*) соответствует первому слову в строке, (\\s) соответствует первому непробельному символу и (\\S*) соответствует второму слову в строке.

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

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

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

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

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