Расширение Regex Tester для Visual Studio 2010

Недавно у меня на работе кончилась пробная версия редактора регулярных выражений RegexBuddy. У нас с лицензиями всё строго, и я сразу удалил данную программу. Товарищи посоветовали попробовать онлайн редакторы в частности RegExr, он мне не понравился и я нашел другой RegexHero.

Но как то у нас временно не работала сеть и тогда я решил написать для себя маленькую утилиту для разбора текста с помощью регулярных выражений, создал WPF приложение, а для разбора текста использовать стал всем известный класс Regex, и уже через пол часа я воспользовался первой версией данной утилиты. Потом в течении двух недель я её доработал по мере необходимости и ловле мелких багов :). После выходных на работе поделился с коллегами, но все восприняли без комментариев очередную утилиту, которую нужно копировать или запускать по сети, кроме одного старшего(не по возрасту) товарища, который сказал, что было бы хорошо сделать её в виде расширения для Visual Studio 2010. И я начал думать о реализации своего расширения…

Создание расширения


Я уже слышал и читал, что делать плагины для VS 2010 легко. Но решил что сначала доведу до ума утилиту в текущем виде, а потом уже буду переносить её, прошла ещё неделя и я был готов. Cначала скачал Visual Studio 2010 SDK, потом немного почитал на www.codeproject.com кто как создавал расширения и конечно почитал MSDN.

Решил использовать тип проекта «Visual Studio Package», который как раз подходил к моим ожиданиям о легком переносе. При создании проекта открылся простой и понятный мастер(Wizard), в котором я выбрал добавление функциональности «Tool Window», проекты для тестирования я убрал, так как утилита у меня простая.

После создания открылся проект:
image

Я сразу обрадовался, как только увидел XAML и быстро скопировал из своего WPF приложения GUI и его CS часть и форма отобразилось в дизайнере, я нажал F5 и открылась экспериментальная студия, где я смог проверить своё расширение, которое нашел в View -> Other Windows -> Regex Test. В итоге оно работало абсолютно идентично:

image

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

Созданное мною расширение я использовал в течении 1 недели и дополнительно сделал:
— обработку в фоновом потоке, в процессе обработки окно расширения становится не активным.
— сделал сочетание горячих клавиш(по документации) для быстрого открытия окна утилиты по Shift+Alt+R, единственное которое было не занято из подходящих :)
— нарисовал иконку и сделал превью картинку для расширения
— заполнил source.extension.vsixmanifest в проекте, который открывается в удобном дизайнере.

И расширение для Visual Studio 2010 готово, назвал его просто: Regex Tester.

Особенности:


Могу выделить две особенности(фичи):
— Снизу справа есть ползунок для изменения размеров шрифтов для всего расширения.
— При использовании Match режима, можно дополнительно задать формат вывода результатов.
Например с помощью рег.выражения Вы вывели список городов, которые Вам необходимо вставить в XML в виде элементов. Вот скриншот интерфейса расширения в VS 2010 с описанным примером.

image

Буду очень рад, если данное расширение будет кому-нибудь полезно, пользуйтесь на здоровье!
Всем спасибо за внимание!
+37
12 июля 2010, 00:17
25
Sharomank 8,5

комментарии (20)

+1
braindamaged #
Своё — оно всегда лучше:) но для работы могу посоветовать вот этот редактор, он free и достаточно удобен: www.radsoftware.com.au/regexdesigner/
+2
Sharomank #
Спасибо за линк, по скрину интерфейс немного не обычно скомпонован, поставлю посмотрю, может какие идеи позаимствую :)
+1
vittore #
а я регекспы чаще всего студийным поиском проверяю…
+2
avz #
Там же какой-то «не нормальный» синтаксис.
0
vittore #
ну есть гемор с бэкрефами да
+1
novoselov #
Если у вас 3 режима, то лучше сделать их в виде вкладок.
Для чего повторять regex в «Match regex» если это все в блоке «Regex Expression»? Просто Match и Result.
Навскидку не вспомню, multiline и singleline не взаимоисключаемые варианты? Если до то это radio button.
Иногда удобно сделать области input и result справа и слева, тогда проще сопоставить ввод и вывод.

По функционалу:
При наведении на строки в Results можно в комментарии выводить найденные в строке параметры, в том числе именнованые если есть.
При вводе regex'a очень помог бы выбор из списка паттернов с внятным описанием как в указанном выше regexdesigner'e
+1
novoselov #
Посмотрите здесь:
gskinner.com/RegExr/ — комментарии и паттерны.
myregexp.com/ — вариант с вкладками.
www.pagecolumn.com/tool/regtest.htm и rejex.heroku.com/- описание (группировка) паттернов.
+1
Sharomank #
>>Если у вас 3 режима, то лучше сделать их в виде вкладок.
Я думал про вкладки, но решил сделать так, всем не угодишь.

>>Для чего повторять regex в «Match regex» если это все в блоке «Regex Expression»? Просто Match и Result.
По поводу лишнего «regex» согласен, по поводу «result» не совсем, так как не совсем понятно, что за result.
По секрету скажу, что «regex» в первом случае дописал так как место позволяло из за длинного «Result format:» и «Replace format:», чтобы места пустого не было :)

>>Иногда удобно сделать области input и result справа и слева, тогда проще сопоставить ввод и вывод.
Всем не угодишь, в большинстве редакторах интерфейс построен подобным образом, хотелось сделать интерфейс более привычным и простым.

>>При наведении на строки в Results можно в комментарии выводить найденные в строке параметры, в том числе именнованые если есть.
Спасибо, возможно реализую что-нибудь подобное.

>>При вводе regex'a очень помог бы выбор из списка паттернов с внятным описанием как в указанном выше regexdesigner'e
Возможно Вы правы, но я не захотел делать справку по рег.выражениям так как посчитал, что в интернете их с избытком и на всех языках.

Спасибо за Ваш комментарий.
0
novoselov #
На myregexp.com вкладки идут на уровне результата, а не ввода — то есть входные параметры фиксированы, интерфейс не перегружен и не дергается и кнопку Запуск можно сделать меньше.
>> По секрету скажу…
Про это и подумал в первую очередь :)
>> Всем не угодишь
Про вкладки это стандарт де факто, делать вкладки через кнопки не интуитивно :)
Про справа-слева, сверху-снизу — реализуется через Dock Manager (как в Visual Studio) и каждый может выбрать и на лету поменять как ему удобнее.
>> я не захотел делать справку по рег.выражениям
В том-то и смысл что это не только справка, но и набор паттернов — не надо вспоминать как пишется, что означает, нажал на нужный и не надо вбивать руками, проверять скобки и прочее…
0
Sharomank #
>>Про вкладки это стандарт де факто, делать вкладки через кнопки не интуитивно :)
Согласен не совсем интуитивно, что нибудь придумаю, по секрету скажу это у меня вообще RadioButton-ы :), они интуитивны в плане переключения режимов, но я решил сделать для них стиль ToogleButton-ов :|

>>Про справа-слева, сверху-снизу — реализуется через Dock Manager (как в Visual Studio) и каждый может выбрать и на лету поменять как ему удобнее.
Я Вас услышал, думаю можно что-нибудь сделать, переделаю GUI посмотрю как это будет работать с резайзами окна, панелей и увеличением размеров шрифтов.

>>В том-то и смысл что это не только справка, но и набор паттернов…
Надо подумать, возможно что-то такое сделаю, главное сделать так, чтобы интерфейс не перегружало визуально.

Спасибо огромное за конструктивный диалог!
+5
Rudia #
Для работы с RegExp'ами есть неплохая бесплатная программа Expresso
По возможностям немного уступает RegexBuddy, но в целом очень неплохая.
0
verych #
Regex Editor как расширение для студии — это интересно, обязательно попробую.
Для себя тоже писал тулзу. Вот линк кому интересно
+1
xeon #
Я понимаю, можно написать программу просто так, для развлечения, для души. Ну вот интересна тема, хочется написать — и все тут. Отлично!
Но зачем говорить, что платная программа дорого, а других нормальных нет? Во-первых, есть Expresso — отличная программа. Не настолько продвинутая, как RegexBuddy, но явно круче самодельных вариантов.
А во-вторых, если так все с лицензиями строго, а программу пользовать хочется, ну купите себе RegexBuddy и не мучайтесь. Я раньше точно так же купил на работу себе TotalCommander за свой счет. Просто потому что это удобно. И второй монитор за свои деньги поставил.
0
Sharomank #
Я вас тоже понимаю, но мне зачастую не хочется запускать «студию» регулярных выражений в лице RegexxBuddy или другого аналога, думаю данное расширение имеет право на существование, не всем и не всегда нужен навороченный редактор рег.выражений.

Я не говорил, что RegexBuddy дорого, или что нет других нормальных программ. Полученное мною расширение не претендует на продвинутось или крутость, при разработке я делал акцент на простоту и удобство.
0
Ueasley #
0
streepteaze #
попробОвать, а не про*бЫвать
0
Sharomank #
Спасибо, исправил.
–2
streepteaze #
бесплатное расширение для фаерфокса

sebastianzartner.de/firefoxExtensions/RExT/
0
iav #
А как его запустить после установки? Как оно себя проявляет?
0
streepteaze #
Инструменты -> regex tester

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.