Вы можете создать свой собственный регистратор, перегрузив класс Logger
Вы покупаете RegexBuddy и используете его встроенную функцию отладки . Если вы работаете с регулярными выражениями более двух раз в год, вы быстро вернете эти деньги вовремя. RegexBuddy также поможет вам создавать простые и сложные регулярные выражения и даже генерировать для вас код на разных языках.
Кроме того, по словам разработчика, этот инструмент почти безупречно работает на Linux при использовании с WINE .
Вы можете попробовать это http://www.pagecolumn.com/tool/regtest.htm
Написание reg exes с использованием нотации, например, PCRE, похоже на написание ассемблера: это нормально, если вы можете просто видеть соответствующие конечные автоматы в своей голове, но может очень быстро становится трудно поддерживать.
Причины отказа от использования отладчика во многом те же, что и для отказа от использования отладчика с языком программирования: вы можете исправить локальные ошибки, но они не помогут вам решить проблемы проектирования, которые привели вас к локальным ошибкам. в первую очередь.
Более рефлексивный способ - использовать представления данных для генерации регулярных выражений на вашем языке программирования и иметь соответствующие абстракции для их построения. Введение Олина Шивера в его нотацию регулярных выражений схемы дает отличный обзор проблем, с которыми сталкиваются при проектировании этих представлений данных.
Я использую:
http://regexlib.com/RETester.aspx
Вы также можете попробовать Regex Hero (использует Silverlight):
Есть отличный бесплатный инструмент, тренер Regex . Последняя версия доступна только для Windows; ее автор доктор Эдмунд Вайц прекратил поддержку версии для Linux, потому что ее скачали слишком мало людей, но на странице загрузки есть более старая версия для Linux.
Я думаю, что нет. Если ваше регулярное выражение слишком сложное и проблематичное до такой степени, что вам нужен отладчик, вы должны создать конкретный синтаксический анализатор или использовать другой метод. Он будет намного удобнее для чтения и сопровождения.
В Perl 5.10, используйте re 'debug';
. (Или debugcolor
, но я не могу правильно отформатировать вывод в Stack Overflow.)
$ perl -Mre=debug -e'"foobar"=~/(.)\1/' Compiling REx "(.)\1" Final program: 1: OPEN1 (3) 3: REG_ANY (4) 4: CLOSE1 (6) 6: REF1 (8) 8: END (0) minlen 1 Matching REx "(.)\1" against "foobar" 0 <> <foobar> | 1:OPEN1(3) 0 <> <foobar> | 3:REG_ANY(4) 1 <f> <oobar> | 4:CLOSE1(6) 1 <f> <oobar> | 6:REF1(8) failed... 1 <f> <oobar> | 1:OPEN1(3) 1 <f> <oobar> | 3:REG_ANY(4) 2 <fo> <obar> | 4:CLOSE1(6) 2 <fo> <obar> | 6:REF1(8) 3 <foo> <bar> | 8:END(0) Match successful! Freeing REx: "(.)\1"
Кроме того, вы можете добавить пробелы и комментарии к регулярным выражениям, чтобы сделать их более читабельными. В Perl это делается с помощью модификатора / x
. В pcre
есть флаг PCRE_EXTENDED
.
"foobar" =~ /
(.) # any character, followed by a
\1 # repeat of previously matched character
/x;
pcre *pat = pcre_compile("(.) # any character, followed by a\n"
"\\1 # repeat of previously matched character\n",
PCRE_EXTENDED,
...);
pcre_exec(pat, NULL, "foobar", ...);
Я использую этот онлайн-инструмент для отладки моего регулярного выражения:
Но да, это может ' t лучше RegexBuddy.
Когда Я застреваю на регулярном выражении и обычно обращаюсь к этому: https://regexr.com/
Идеально подходит для быстрого тестирования того, где что-то идет не так.
Я отлаживаю регулярные выражения собственными глазами. Поэтому я использую модификатор / x
, пишу к ним комментарии и разбиваю их на части. Прочтите книгу Джеффри Фридла Mastering Regular Expressions , чтобы узнать, как разрабатывать быстрые и удобочитаемые регулярные выражения. Различные инструменты отладки регулярных выражений просто провоцируют программирование вуду.
Взгляните на (платные) инструменты на сайте regular-expressions.info . В частности, RegexBuddy . Вот сообщение Джеффа Этвуда по теме .
Если я чувствую, что застрял, мне нравится идти назад и генерировать regex непосредственно из образца текста с помощью txt2re (хотя обычно я в конечном итоге настраиваю полученный regex вручную).
Я использую Kodos - Отладчик регулярных выражений Python:
Kodos - это утилита с графическим интерфейсом Python для создания, тестирования и отладки регулярных выражений для языка программирования Python. Kodos должен помочь любому разработчику эффективно и без усилий создавать регулярные выражения в Python. Поскольку реализация регулярных выражений в Python основана на стандарте PCRE, Kodos должен принести пользу разработчикам других языков программирования, которые также придерживаются стандарта PCRE (Perl, PHP и т.д.).
(...)
Работает на Linux, Unix, Windows, Mac.
Я часто использую pcretest - вряд ли «отладчик», но он работает только с текстовым SSH-соединением и анализирует именно тот диалект регулярных выражений, который мне нужен. : мой (C ++) код ссылается на libpcre, поэтому нет никаких трудностей с тонкими различиями в том, что волшебно, а что нет, и т. д.
В целом я согласен с парнем выше, для которого отладчик регулярных выражений - это запах кода. Для меня сложнее всего использовать регулярные выражения, как правило, не само регулярное выражение, а несколько уровней цитирования, необходимых для их работы.