===================================================================== AJPapps - RegExp playground 1.06 Линда Кайе 2012-2021. Посвящается Ариэль ===================================================================== Эта программа пригодится тем, кто использует регулярные выражения в WSH реализации (скрипты на JScript, VBScript и COM компонент). Она позволяет задать паттерн, ввести исходный текст и посмотреть в виде дерева, что даст объект RegExp на выходе. Также поддерживается замена. История создания ---------------- Однажды я замучилась писать регэкспы по интуиции. Обнаружилась утилита RegularToy, которая выводила результаты выполнения в виде дерева, но у неё был ряд недостатков, которые мне сильно не нравились, а кроме того, она использовала реализацию регулярных выражений из .NET, что немного не соответствовало моим потребностям. Поэтому я написала свой вариант, в который даже добавила замену, которую периодически использую в собственных программах. Всё делается наглядно и позволяет без лишних проблем экспериментировать. История изменений ----------------- • 1.00.0016 Первый публичный релиз. • 1.01.0018 [+] Появилась возможность сохранять условия во внешний файл и потом загружать их. [+] Появилось меню. [+] Появилась генерация кода с использованием текущих условий. [-] Между запусками программы неправильно сохранялись значения флагов Global, Multiline и Ignore Case. • 1.02.0022 [+] Программа воспринимает файл как документ, поэтому можно созхранять изменения в открытом файле без повторного ввода имени. [+] Программа принимает имя файла через командную строку. [+] Между запусками программы не сохраняются значения полей и галочек. • 1.02.0023 [+] Диалоги открытия и сохранения файла показывают текущий каталог, а не Мои документы. • 1.02.0024 [-] Диалоги открытия и сохранения файла не показывали текущий каталог. • 1.02.0025 [+] Пункт меню Load переименован в Open. • 1.02.0030 [+] В дереве объектов иконки теперь содержат индекс объекта, если он меньше десяти. • 1.02.0031 [-] При возникновении ошибок ввода-вывода не выводились подробности об ошибке (описание, код). • 1.03.0041 [+] Теперь программа загружает не больше сотни узлов в дерево. [+] В дереве выводится количество найденных совпадений. • 1.04.0043 [+] Появилась возможность отправить результаты сравнения в Excel. • 1.04.0044 [-] Во время загрузки дерева, программа неправильно определяла количество узлов, и могла вывести меньше узлов, чем должна была. [-] При возникновении предыдущей ошибки, программа неправильно выводила сведения о количестве пропущенных узлов. • 1.05.0046 [+] Добавлена справка по символам в строке замены. [+] Добавлена справка по флагам (чекбоксам). [+] В генерируемом коде SourceString заменена на TXT. [-] В генерируемом коде не появляются лишние пустые строки (""). [-] В генерируемый код правильно вставляются символы табляции. [-] В генерируемом коде теперь отдельно создаётся объект RegExp, чтобы не забывать это делать в коде на VBScript (когда комментируется или удаляется "As New RegExp"). • 1.05.0047 [+] Теперь нумерация символов начинается с единицы, как в VB. • 1.06.0049 [3.08.2021] [+] Добавлено меню с горячими клавишами для опций вроде "Global". [+] Добавлена опция "Ignore line breaks", которая заставляет программу игнорировать переносы в регулярном выражении. Для удобочитаемости. Зависимости ----------- Для работы этой программы нужны следующие компоненты: • AJPapps - AJPapps support library 1.00 Файл AJPappsSupport0100.DLL • AJPapps - AJPapps support library FBE 1.00 Файл AJPappsSupportFBE0100.DLL • :-) VideoSoft vsOcx6 Controls Файл VsOcx6.OCX • AJPapps - Common dialogs library 1.00 Файл CommonDialogs0100.DLL • AJPapps - File I/O support 1.04 Файл FileIOSupport0104.DLL • AJPapps - Panel control 1.00 Файл Panel0100.OCX • AJPapps - Библиотека общих функций 3.05 Файл CommonFunctions0305.DLL • Microsoft Windows Common Controls 6.0 (SP6) Файл MSCOMCTL.OCX • Microsoft Visual Basic Virtual Machine Файл MSVBVM60.DLL Эти компоненты обязательны. Они уже включены в программу установки ^_^ Информация о разработке ----------------------- Язык: Microsoft Visual Basic 6.0 SP6 Платформа: Windows XP Professional SP3 Установка --------- Просто запустите Setup.RegExpPlayground.EXE, и программа установки сама создаст все необходимые ярлыки. Использование ------------- После запуска появится окно с кучей полей, при помощи которых программа взаимодействует с объектом RegExp. В левом столбике располагаются поля ввода исходных данных: паттерн сверху (RegExp.Pattern) и исходный текст снизу (передаётся в качестве параметра функциям). В центре располагается дерево объектов Matches и SubMatches, которые возвращаются при выполнении метода Execute. Ниже находится одноимённая кнопка, которая его вызывает. В правом столбике располагаются поля, относящиеся к замене текста. В верхнем поле вводится шаблон для замены (параметр ReplaceVar метода Replace), а в нижнее поле попадает результат выполнения этого метода. Ещё ниже находится одноимённая кнопка для его вызова. Также внизу присутствует кнопка Test, которая вызывает одноимённый метод и сообщает, соответствует ли текст с левого столбика паттерну. Три галочки соответствуют свойствам Global, IgnoreCase и Multiline объекта RegExp. Эти свойства устанавливаются непосредственно перед вызовом методов объекта RegExp и повлияют на их выполнение. По нажатию на F1 появляется окно подсказки по формату паттерна. Текст взят из справочника "Microsoft Windows Script Technologies". По остальным элементам справки нет, поскольку они не вызывают столько вопросов как, собственно паттерн. В меню Run присутствуют три команды для генерации заготовки кода с использованием значений, введённых в окне: паттерна, строки замены и флагов (галочек). Исходная строка не вставляется - используется только переменная SourceString. В меню File присутствуют команды для сохранения и загрузки введённых в окне значений. Программа использует для этого файлы с расширением RegExp, но можно указать любое другое расширение. Сами файлы содержат простой текст в кодировке Unicode, разделяя блоки данных нулевым символом. Дерево объектов --------------- Дерево объектов представляет собой коллекцию объектов Matches, для каждого из которых приведена коллекция объектов SubMatches. Такая структура позволяет более наглядно показать результат выполнения регулярного выражения. Каждый элемент дерева содержит текстовое значение (свойство Value для объектов коллекции Matches) и дополнительную информацию к квадратных скобках. Для объектов Matches: 1. Индекс первого символа в исходном тексте. В данном случае символы нумеруются с единицы, как в Visual Basic. Сам объект возвращает индекс, начиная с нуля, но для удобства сделано так. 2. Длина текстового значения. Для объектов SubMatches: 1. Длина текстового значения. Индекс каждого элемента отображается в иконке, если он меньше десяти. Это сделано для удобства построения шаблона замены. Элементы перчисляются с единицы. Удаление -------- Удаление производится обычным способом - через Установку и удаление программ. Маленький копирайт ------------------ 1. Программа распространяется бесплатно. 2. Вы имеете право распространять её на тех же условиях. 3. При распространении вы не имеете права менять авторство программы, присваивать его себе или каким-либо иным способом искажать его. 4. Разрешено коммерческое использование программы (в офисе, на производстве) за исключением её платного распространения или сдачи в аренду. 5. Программа распространяется как есть. Автор не несёт ответственности за любые трагедии или несчастные случаи, вызванные использованием программы. 6. Вы имеете право использовать ActiveX компоненты, поставляемые с программой, в собственных программах. При этом автор не гарантирует совместимость будущих версий компонентов. 7. Для любого пункта данного соглашения может быть сделано исключение с разрешения автора программы. 8. По любым вопросам, связанным с данной программой, обращайтесь по адресу lindaoneesama@gmail.com Контакты -------- Почта: lindaoneesama@gmail.com Сайт: https://www.lindachan.net