Регулярные выражения на больших выборках данных

Обнаружил интересное исследование A Fast Regular Expression Indexing Engine и подход к применению регулярных выражений на больших датасетах в вебе на основе предварительного индексирования NGram.

Учитывая что я сейчас активно размышляю (активное размышление=проведение экспериментов) над схожей темой, мне вспомнилось как ещё пару лет назад у меня выдался разговор с разработчиком который вместо алгоритмов разбора текста любил уложить их в одно регулярное выражение, пусть даже и на пол страницы и при этом он считал такое решение красивым и правильным. А вот был ли оно действительно правильным?

Вопрос в том что красота и правильность определяются не только внешним видом кода, но и его маштабированием и применимостью для работы в различных условиях. Например, люди работающие над созданием антиспам систем и IDS решений знают о проблемах когда правил фильтрации начинает накапливаться такое количество что использование регулярных выражений хоронит производительность в принципе, в итоге придумываются свои языки/механизмы построения правил и их обработки.

Например, для IDS существуют и активно идут работы по оптимизации раюльы с регулярными выражениями, например, тут — Regular Expression Matching in Reconfigurable Hardware и не только.

Почему длинные и сложные регулярные выражения это некрасиво и неправильно ? Потому как их сложно, а то и невозможно, разделить на паралелльные цепочки операций и использовать несколько процессоров или больше возможностей одного. Крайне сложно провести «интеллектуальную компиляцию» коллекции выражений с для выработки правил их сочетаемости, применимости и неприменимости.

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

About This Author

Яндекс.Метрика