Регулярные выражения для поиска - MySQL

Узнай цену своей работы

Формулировка задачи:

Возможно сделать регулярное выражение для поиска вот такой задачи: "В таблице имеется три значение '123', '12' и '1'. В поиске задано 3 цифры при поиске '123' возвращается '123', при поиске' 124' возвращает '12', при поиске '133' вернуть '1'?

Решение задачи: «Регулярные выражения для поиска»

textual
Листинг программы
SELECT if(
  substring( `str` , 1, 1 ) = '1',
  concat( '1', if(
      substring( `str` , 2, 1 ) = '2',
      concat( '2', if(
          substring( `str` , 3, 1 ) = '3',
          '3',
          '' ) ) ,
      '' ) ) ,
  '' )
FROM `table` where str RLIKE '1(2(3?)?)?'

Объяснение кода листинга программы

В данном коде выполняется запрос к таблице table с условием, что поле str соответствует определенному шаблону. Регулярное выражение '1(2(3?)?)?' описывает следующую структуру данных:

  1. Одна и только одна '1'.
  2. Затем, в отдельной группе, '2'.
  3. Затем, в той же группе, либо '3', либо ничего ('?').
  4. Эта группа может повторяться не более двух раз ('?'). В коде используется функция substring для извлечения подстроки из поля str и оператор concat для объединения подстрок в одну строку. Код проверяет каждую подстроку, начиная с первой, и объединяет их в одну строку, если они соответствуют шаблону. Если шаблон не соответствует, то возвращается пустая строка. Таким образом, код возвращает строку, которая соответствует заданному регулярному выражению, из поля str каждой записи таблицы table.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.364 из 5