Утилита для тестирования регулярных выражений от Алексея Виноградова

admin
, 21.09.2004 в 22:02
В качестве ананса, приводим тест письма Алексея:


Эксклюзив! Лист (bayesit-list@nobat.ru) является первоисточником публикации данного вложенного файла и сопровождающего его текста. При публикации в других местах прошу сохранять упоминание первоисточника.


Я вплотную занялся корректностью файла регулярных выражений для "выборочного" скачивания (selective.txt). Для этого потребовалась утилита, которая обеспечила бы удобную отладку регулярных выражений. Поиск привёл только к программе TestRExp, написанной на Delphi, которая работает с собственной (встроенной) библиотекой регулярных выражений (порт Pcre на Delphi). Однако эта программа имеет ряд существенных недостатков. Во-первых, она иногда "вылетает" на хитрых выражениях. Во-вторых, она немного устарела, и некоторые довольно существенные части спецификации PCRE на ней уже не работают (например, предположения (assertions) выдают ошибку синтаксиса, хотя они должны поддерживаться, а также не работают именованные подвыражения). К тому же сама программа имеет скорее "демонстрационный" характер, и как специализированная утилита может рассматриваться весьма ограниченно.


В результате я написал собственную утилиту для тестирования регулярных выражений, которую вы можете найти в виде архива по адресу http://files.nobat.ru/utils/1 в этом архиве помимо утилиты находится и сама библиотека PCRE.dll).


Утилита обеспечивает следующую функциональность:

  • Работа непосредственно с pcre.dll (т.е. используется _внешняя_ библиотека, а не встроенная) - а значит, можно тестировать возможности библиотеки, а не утилиты;
  • Проверка синтаксиса выражений непосредственно в процессе их набора;
  • Возможность получить полную информацию о регулярном выражении (всё, что возвращает pcre.dll в функции pcre_fullinfo);
  • Возможность работы с любыми "национальными" текстами за счёт возможности явно указать нужную локаль;
  • Возможность загружать текст выражения и текста для проверки из внешнего файла в форматах .txt, .rtf, .doc (MS Word);
  • Полноценная работа с именованными подшаблонами (что это такое? Например, в выражении "Мама (?P<my_name>мыла) раму" к первому подшаблону можно обращаться как по номеру (1), так и по имени ("my_name"));
  • Возможность подсветки найденных шаблонов другим цветом;
  • Для подшаблонов - отображение списка найденных подшаблонов в отдельном плавающем окне;
  • Размер утилиты (даже вместе с библиотекой PCRE.dll) минимум в 4 раза меньше,
    чем упомянутой в начале утилиты, написанной на Delphi.


В немного изменённом виде эта утилита войдёт в состав следующей версии bayesit как встроенный отладчик выражений для ч/б списков.
Категории
Новости The Bat!