Добавить в корзинуПозвонить
Найти в Дзене
Константин Кулаков

Буквально несколько слов о регэкспах, практические примеры использования

Сегодня буду краток. Подниму пару-тройку своих давних публикаций на форумах и соцсетях для иллюстрации полезности знания регэкспов. Начну с самой старой. С форума одинэсников. Хотя, тут, наверно, больше про MS Office с его интерфейсом взаимодействия через некоторые "внешние" языки (JScript), итак, пост 16. Скриптконтрол. Делит строку с типом, номером и датой документа на подстроки, каждый реквизит в отдельной строке результата. Старался показать, что таким образом задачу решать нельзя, поскольку творчество неподготовленного пользователя, доверяющего часть, казалось бы, не сложной работы "компьютеру" приведёт к большим проблемам рано или поздно. То есть правильным решением является обучение и некоторые организационные меры (регламенты), которые нужно разработать предварительно и неукоснительно соблюдать. А регэксп, да, даст быстрое и неверное решение. Вывод: не всё, что умеешь, следует где попало применять. Дальше, по порядку: скрипт, создающий оглавление папки с видеофайлами. Результат

Сегодня буду краток. Подниму пару-тройку своих давних публикаций на форумах и соцсетях для иллюстрации полезности знания регэкспов.

Начну с самой старой. С форума одинэсников. Хотя, тут, наверно, больше про MS Office с его интерфейсом взаимодействия через некоторые "внешние" языки (JScript), итак, пост 16. Скриптконтрол. Делит строку с типом, номером и датой документа на подстроки, каждый реквизит в отдельной строке результата. Старался показать, что таким образом задачу решать нельзя, поскольку творчество неподготовленного пользователя, доверяющего часть, казалось бы, не сложной работы "компьютеру" приведёт к большим проблемам рано или поздно. То есть правильным решением является обучение и некоторые организационные меры (регламенты), которые нужно разработать предварительно и неукоснительно соблюдать. А регэксп, да, даст быстрое и неверное решение. Вывод: не всё, что умеешь, следует где попало применять.

Дальше, по порядку: скрипт, создающий оглавление папки с видеофайлами. Результат должен получиться примерно такой. Кстати, данный файл можно воспринимать как продолжение этой моей публикации на Дзене, где я показываю, что видео можно довольно легко (не не совсем быстро, всё-таки нужно программе какое-то время его анализировать) делить на фрагменты в зависимости от изменения логотипа канала с предварительным автоматическим разбиением на главы. Ну и опытный взгляд заметит, что у меня настроена "история файлов". Это результат работы в условиях санкций. Чем-то лучше, чем-то хуже, но также приемлемо. Что хочу отметить по скрипту, так это вот такой способ переноса по словам в "таблице":

var re = new RegExp("\\s*(.{0," + (isArial ? 59 : tailLength) +"}[^-\\s])(?=\\s+|$|-)","g");
...
function splitStrings(inp, isFileName){var out = "", row = 0; while(re.exec(inp))out += "\r\n" + (isFileName && row++ ? fsp + "| " + RegExp.$1 : RegExp.$1); return out.substr(2); }

Результат наглядно показывает преимущество регэкспов на этой подзадаче.

Ну а вот это предлагаю разобрать самостоятельно (язык другой), задача - найти последнюю строку определённого вида в файле, и не просто найти, а ещё и сразу получить из неё объект datetime, чтобы ясно стало, свежая там информация или нет и в зависимости от этого уже действовать. Ну и предыдущие мои посты там о том, как записывать трансляцию IPTV, если кому интересно. Не всегда и не везде работает, хотя мне много лет помогало.

Вот и всё примерно. Если статья чем-то помогла, взгляните ещё и на это: Немного о себе, принципах, состоянии здоровья и финансов.