Утилита для тестирования регулярных выражений от Алексея Виноградова
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 как встроенный отладчик выражений для ч/б списков.