MariaDB функция REGEXP_INSTR

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

Описание

MariaDB функция REGEXP_INSTR является расширением функции INSTR. Возвращает расположение регулярного выражения pattern в string. Эта функция, представленная в MariaDB 10.0.5, позволит вам найти подстроку в строке, используя сопоставление с образцом регулярного выражения.

Синтаксис

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

REGEXP_INSTR( 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_INSTR выполняет сопоставление без учета регистра, кроме случаев, когда используется с двоичными строками.
  • Если функция REGEXP_INSTR не находит вхождения pattern, она возвращает NULL.
  • Эта страница относится к MariaDB 10.0.5 и выше, использующим библиотеку регулярных выражений PCRE.
  • Смотрите также функцию INSTR.

Применение

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

  • MariaDB 10.0.5+

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

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

Этот пример вернет 1, потому что он выполняет поиск 'б' без учета регистра. Следовательно, он соответствует символу 'Б' в первой позиции.

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

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

В приведенном выше примере мы использовали ключевое слово BINARY, чтобы преобразовать нашу строку в двоичную строку.
Теперь функция REGEXP_INSTR вернет 14, потому что она будет выполнять поиск с учетом регистра и искать только значения 'б' (и исключать значения 'Б').
Мы могли бы также выполнить поиск с учетом регистра, используя сопоставление с шаблоном следующим образом

Этот пример также соответствует первому символу 'б' в строке и игнорирует значения 'Б'.

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

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

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

В этом примере мы будем искать шаблон 'the' в поле other_comments в таблице contacts.

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

Следующий пример, который мы рассмотрим, включает использование шаблона |. Шаблон | используется как "OR" для указания более одной альтернативы.
Например:

Этот пример вернет 1, потому что он ищет первый гласный (a, е, и, о или у) в строке. Функция REGEXP_INSTR будет выполнять поиск без учета регистра, что означает, что 'А' в 'Андерсон' будет сопоставляться как 'а'.
Теперь давайте быстро покажем, как бы вы использовали эту функцию со столбцом.
Допустим, у нас есть таблица contact со следующими данными:

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

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

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

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