Romul81
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору regist123 Сделал для примера визуализацию регулярки по корректному захвату DSL тегов. Из всего опробованного, результат понравился больше всего в: 1) regex101.com В данном случае используется диалект JavaScript. Причём, сайт лояльно относится к заглядыванию назад переменной длины для этого языка. Это означает, что его хорошо поддерживают (сайт). "Объяснение", конечно не самое понятное. Но примерно так же оно оформлено в RegexBuddy. Для JavaScript дебаггера нет. Но он появляется, если выбрать диалект PCRE. Я чуть изменил регулярку, чтоб она стала совместимой с PCRE, с целью протестировать этот дебаггер. Сама регулярка стала из-за этого менее корректной, в плане логики, но для нас в данном случае это не важно. Ссылка - соотв. опция появляется слева в меню Tools. Очень прикольно организована анимация. Можно проследить как движется логика поиска в рамках регулярки. Пошагово. Тем не менее, ему (дебаггеру) далеко до такового из RegexBuddy. Дело в том, что на regex101 можно "отдебажить" только совпадения. Т.е. симуляция процесса идёт из позиции, где заблаговременно известно, что будет совпадение. Гораздо важнее для достижения лучшей эффективности дебажить позиции, в которых совпадения НЕТ! Именно там, как правило, происходит ад бэктрекинга. И задача дебаггера всё это отследить, чтоб составитель регулярки мог минимизировать все негативные моменты, связанные с бэктрекингом. Вот как раз с этим, RegexBuddy справляется в лучшем виде! 2) debuggex.com. Сервис, конечно, не такой продвинутый. Да и, видно с поддержкой не ахти. При выборе JS, подсвечивает, якобы ошибку в look-behind. Т.е. сайт не в курсе, что так уже можно. Если поменять на PCRE, то ошибок не выдаёт, чем я и воспользовался. Хотя, строго говоря, эта регулярка в PCRE работать не будет (по причине того самого заглядывания назад переменной длины). Ну да ладно. Ценность этого сервиса в другом - в наглядном/графическом представлении регулярного выражения. Очень прикольно наблюдать все эти разветвления в виде блок-схемы. Вероятно, это может помочь многим понять те или иные нюансы регэкспов. Дебаггер на этом сервисе, понятное дело, никакущий. Я так и не понял, как он работает. В любом случае, тестированная регулярка не могла быть использована в рамках PCRE. А для JS сам сервис её "запретил" . Главное, как я уже сказал, на этом сервисе - визуализация. |