Средство тестирования регулярных выражений (проект)

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Ментор Яковлев Виктор
Учебный семестр Весна 2015
Учебный курс 1-й курс


Внимание! Данный проект находится в архиве и реализован не будет.

Что это за проект?

Регулярные выражения

Регулярные выражения – это формальный язык для описания шаблона поиска и осуществления замен в текстах.

Пример: регулярное выражение (в синтаксисе Qt)

 ((http|https)://)?((www\.)?[a-zA-Z0-9\-_]+\.ru)(/[a-zA-Z0-9\-_/]+)?

определяет множество URL веб-страниц в зоне «.ru», которые находятся только на доменах второго уровня, возможно с префиксом «www.». Результатом упешного поиска является список строк, первая из которых является найденной в тексте подстрокой, а остальные – отдельные значимые фрагменты этой подстроки, которые в регулярном выражении задаются круглыми скобками. Регулярные выражения повсеместно используются во всех задачах, так или иначе связанных с обработкой текста.

Постановка задачи

Требуется реализовать инструмент (кроссплатформенный, то есть Windows+Linux) для тестирования регулярных выражений. В качестве примера реализации можно смотреть kregexpeditor из состава KDE3 (в любом старом дистрибутиве Linux середины 2000-х годов, например AltLinux 5.0 или openSUSE версии до 11.2).

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

Программа должна выполнять простую проверку корректности строки регулярного выражения и диагностировать следующие синтаксические ошибки: 1) непарные скобки; 2) некорректные управляющие символы.

Чему вы научитесь?

  1. Работа с регулярными выражениями
  2. Разработка GUI-приложения с использованием современного API

Какие начальные требования?

  1. Знание объектно-ориентированного программирования на языке C++
  2. Знание технического английского (хотя бы со словарем или переводчиком)

Какие будут использоваться технологии?

Предполагается реализациия проекта с использования набора библиотек Qt (http://qt-project.org).

Темы вводных занятий

  1. Вводный мастер-класс по созданию простого GUI-приложения с использованием Qt
  2. Сборка RPM-пакетов


Направления развития

Можно реализовать визуализацию структуры регулярного выражения.

Критерии оценки

  • 4 балла. Реализована программа, которая по заданному корректному регулярному выражению выдает список найденных вхождений в некотором текстовом файле.
  • 5 баллов. Возможность редактирования текста и поиска вхождений в текстовом редакторе.
  • 6 баллов. Найденные вхождения текста выдаются не списком, а выделяются (цветом, подчеркиванием и т. д.) в текстовом редакторе
  • 7 баллов. Выделяются не только вхождения найденного текста, но и его обособленные части

Визуализация структуры регулярного выражения: +2 балла.

Оформление программы в виде инсталлятора (Windows) или RPM/DEB пакета (Linux): +1 балл.