Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

0. Николай Щербаченко (romasna) 137 27.02.17 10:31 Сейчас в теме
Предлагается к использованию построитель регулярных выражений. Выполненный в виде внешней обработки, он позволит строить сложно-структурированные выражения на основе параметрического описания, тестировать их, и в результате получить программный код 1С.

Перейти к публикации

Комментарии
1. Sergei (kauksi) 194 13.03.17 16:01 Сейчас в теме
Лет 12 назад использовал регулярные выражения чтобы парсить адреса для прокси. А зачем они в реальном мире так и не понял.
2. Николай Щербаченко (romasna) 137 13.03.17 16:06 Сейчас в теме
Имхо, они избавляют от нервенной болезни при парсинге традиционными (процедурными) методами.
3. Андрей Ильин (su_mai) 86 14.03.17 09:05 Сейчас в теме
Большая работа, однако в платформе 1С нет и похоже не будет уже "никогда" :) поддержки регулярных выражений. Жаль, но использование скриптов не всегда допустимо. Для отладки RegExp я использую Notepad++.
4. Евгений Мадонов (madonov) 142 14.03.17 10:04 Сейчас в теме
Хорошая статья, спасибо.

А еще порадовал заголовок:
"Регулярные выражения – это просто."
А потом статья на 40 экранов =)) .
Nelli_A86; ABudnikov; Дмитрий74Чел; Serega-artem; jif; sulfur17; spock; Brawler; ProX; Berckk; TreeDogNight; +11 Ответить 2
5. Николай Щербаченко (romasna) 137 14.03.17 10:18 Сейчас в теме
(3) Ну что с того, что Фирма 1С все еще не предоставила нам в работу объект под названием РегулярныеВыражения? Дык ведь и препон к их использованию она не ставит никаких. К тому же, у нас есть Орефков. Я не успел опробовать, но полагаю, что наши возможности в плане использования регулярных выражений такие же, как и у разработчиков 1С, благодаря его компоненте.
Ну, а кто чем пользуется при отладке выражений, - это дело вкуса и привычек. Множественность подходов только приветствуется. Предлагаемый здесь максимально приближен к среде, в которой мы работаем. Коды открытые. Если что-то не нравится в их работе и вас не стошнит от них, - меняйте себе на здоровье, нам на потеху.
6. Николай Щербаченко (romasna) 137 14.03.17 10:19 Сейчас в теме
(4)Ах, заголовок... надо же было чем-то привлечь внимание?! Просто рекламный трюк!
7. Антонио (Fragster) 648 14.03.17 11:12 Сейчас в теме
(1) отключать "защиту от опасных действий" для конкретных баз. Кстати, не увидел этого (более актуального) кейса в статье.
8. Sergey Andreev (starik-2005) 852 14.03.17 11:13 Сейчас в теме
(3)
Большая работа, однако в платформе 1С нет и похоже не будет уже "никогда" :) поддержки регулярных выражений

Это не совсем так (даже совсем не так). Смотрите тут.
9. Sergey Andreev (starik-2005) 852 14.03.17 11:14 Сейчас в теме
Хорошая статья, хоть и не читал )))
корум; +1 2 Ответить 1
10. Антонио (Fragster) 648 14.03.17 12:27 Сейчас в теме
11. Александр Полетаев (Alias) 33 14.03.17 12:51 Сейчас в теме
"После снятия режима совместимости, ширина поля приобретает стандартную ширину "40". На это влияет установленное по умолчанию свойство "АвтоМаксимальнаяШирина". Для восстановления прежнего вида необходимо отключить свойство "АвтоМаксимальнаяШирина" для поля." (с) - рекомендации к адаптации интерфейсов к режиму "без совместимости".

Сейчас поля Текст, МаскаРезультата, Код1С и др. в режиме "без совместимости" слишком узкие.
Ну это так, мелочи. Вообще, конечно, обработка монументальная :)
12. Николай Щербаченко (romasna) 137 14.03.17 12:57 Сейчас в теме
(11)Хм... я долго (не скажу, что вечно!) колупался с этой проблемой, но так и не решил. Спасибо. принято к исполнению. :)
13. Сергей Старых (tormozit) 4134 14.03.17 13:05 Сейчас в теме
Отлично. Пользуюсь обычно RegexBuddy для отладки регулярных выражений. Но ограничения VBScript реализации периодически ставят палки в колеса. Поэтому отладчик+конструктор на языке 1С будет полезен. А уж иерархическое описание выражения даже в RegexBuddy отсутствует. В своих разработках я много использовал сложные регулярные выражения и без иерархического описания просто нереально было бы их использовать.

Для создания редакторов кода на встроенном языке и языке запросов на управляемых формах очень пригодится. Вопрос только в скорости работы на больших текстах.
14. Николай Щербаченко (romasna) 137 14.03.17 13:12 Сейчас в теме
(11) Залил новый архивный файл с изменениями. Еще раз спасибо за подсказку.
15. Николай Щербаченко (romasna) 137 14.03.17 13:17 Сейчас в теме
(13) Я тестировал обработку на больших программных модулях, точнее отдельные регулярные выражения. И когда VBScript отрабатывал менее чем за 1сек., секунд 10-15 уходило на обработку результата в цикле и показ на форме этой обработки. Это все, что могу сказать. Ускорить VBScript и иже с ним мы никак не сможем, а все остальное, - надо рассматривать конкретные случаи.
16. bulpi bulpi (bulpi) 106 14.03.17 14:49 Сейчас в теме
Автор молодец. Качайте, народ, пока бесплатно! :)
17. Николай Щербаченко (romasna) 137 14.03.17 14:56 Сейчас в теме
(16)Где бесплатно? Я уж который день пытаюсь удовлетворить на этом ресурсе свои меркантильные интересы... платим денежку 1sm и качаем! ;)
18. Алексей 1 (AlX0id) 14.03.17 15:08 Сейчас в теме
https://regex101.com/ - that's all, folks %)

Не, труд, конечно, большой.. но есть гугл, есть онлайн-сервисы..
premier; kraynev-navi; +2 Ответить 1
19. Sergey Andreev (starik-2005) 852 14.03.17 17:19 Сейчас в теме
(0)
Особенности: используются модальные и синхронные вызовы.
А зачем?
20. Николай Щербаченко (romasna) 137 14.03.17 18:24 Сейчас в теме
(19)Извини меня за непонимание, но к чему этот вопрос? Если тебя действительно волнует ответ на него, скачай обработку и посмотри где я использую эти вызовы и для чего. Я не посчитал нужным убирать модальные вызовы, - мне они не мешают... мне с ними легче. А если мне что-то не нравится в программном коде и он доступен, - я его меняю.
21. Sergey Andreev (starik-2005) 852 14.03.17 23:06 Сейчас в теме
(20)
но к чему этот вопрос?
Так XXI в. на дворе, не?
22. Николай Щербаченко (romasna) 137 14.03.17 23:49 Сейчас в теме
(21)Лучшее - враг хорошего. ;)
23. Sergey Andreev (starik-2005) 852 15.03.17 10:48 Сейчас в теме
(22)
Лучшее - враг хорошего
Не стоит верить народной мудрости, распиаренной Шахиджаняном - тут он прав лишь в том, что если плохому танцору жмут ботинки, то лучше бы ему и не пытаться танцевать лучше. А кто способен - тот обязан стремиться к лучшему, иначе так и будет ключи подавать Вот, например, лучшее - это регулярные выражения, а хорошее - это сотни if-then-else. Многие по Вашей же логике выбирают второе, "и оправдана сия премудрость чадами ее" (с).
24. Николай Щербаченко (romasna) 137 15.03.17 13:00 Сейчас в теме
(23)Сергей, я тебя услышал. Я наблюдаю за тобой с того самого момента, как ты сделал свой второй (9) комментарий.
Спасибо за усилия, направленные на улучшение обработки. Немногие способны проявлять столько заботы в случаях, когда им эта обработка, в-общем-то, безразлична. :)
25. Николай Щербаченко (romasna) 137 16.03.17 19:14 Сейчас в теме
(18)Это дело вкуса, прежде всего, привычек... Но я попытался понять, как ты , будучи программистом 1С и настроив сложное(?) выражение в указанном тобой веб-сервисе, в дальнейшем используешь в 1С? Я увидел в этом сервисе 4 разных процессора регулярных выражений на закладке FLAVOR. Это ведь должна быть какая-то внешняя компонента .dll, которую нужно потом использовать в 1С? На VBScript, который я знаю, эти настроенные в веб-сервисе выражения не сработают за небольшим исключением, как не сработал мой уже отлаженный пример в предложенном веб-сервисе (ни с одним из процессоров). Что я упустил?
Многоопытный Сергей Старых в (13), пользуясь довольно навороченным конструктором регулярных выражений (из Гугла!), таки не преминул отметить некоторые неувязочки с 1С. И вот представь.... ты тратишь кучу времени на отладку регулярного выражения в стороннем программном продукте, переносишь в 1С, а он... хе-хе... не работает.
Не лучше ли, когда инструмент максимально интегрирован в среду, где твои выражения будут использоваться?
26. Алексей 1 (AlX0id) 16.03.17 19:51 Сейчас в теме
(25)
Хм. Воткну в шаблон Regexp, нет? )
В веб-сервисе я сделаю первичную отладку выражения, а затем, пользуясь инструментами разработчика того же Сергея, в консоли кода отлажу его вполне себе легко :)
Я, кстати, не фанат усложнять регэкспы, так что бОльшая часть используемых мной - кроссплатформенна вполне. Сложные регэкспы, я все же полез бы ладить в Регексбадди, да.
27. Николай Щербаченко (romasna) 137 16.03.17 20:13 Сейчас в теме
28. Андрей Ильин (su_mai) 86 17.03.17 03:54 Сейчас в теме
(8) Это понятно, часто можно найти выход, но такой код никто не даст в типовую "конфу" включить. Непосредственной поддержки регулярных выражений, явно задекларированной 1С, нет.
29. Sergey Andreev (starik-2005) 852 17.03.17 10:24 Сейчас в теме
(28)
такой код никто не даст в типовую "конфу" включить. Непосредственной поддержки регулярных выражений, явно задекларированной 1С, нет.
Такой код уже много куда включен. И это явно задекларированный 1С способ, ибо у них в системе есть объект (ОбъектXDTO), тип которого системой проверяется на петтерн регулярного выражения. Он есть в конфигураторе, так что нельзя сказать, что это не 1С.
30. Александр Кузин (sashocq) 187 20.03.17 21:57 Сейчас в теме
Труд проделан громадный. Но ценность (в виде накопленного опыта) имеет только для автора велосипеда.
Сам я не вижу смысла менять легкий, удобный и бесплатный Expresso на эту обработку. Он и дерево строит и показывает что где нашлось, все регэкспы делаю в нём. Тут, видимо, кому что. Онлайн сервисами пользоваться не люблю, предпочитаю десктопные приложения. RegexBuddy по скриншотам понравился. Но, похоже, тот же Expresso, только за 40$. Если кто-нибудь посоветует ещё инструментов, естественно, посмотрю с интересом.
Публикацию прочитал по диагонали, ибо бОльшую часть текста автор решает какую-то свою задачу. Саму же обработку оценил по скриншотам - желания скачать не появилось. Создалось впечатление, что это такой большой тяжёлый монстр, с которым можно работать только в полный экран.
31. Николай Щербаченко (romasna) 137 20.03.17 22:31 Сейчас в теме
(30)Извини, но если бы ты читал, а не "прочитал по диагонали", то заметил бы, что я не решаю здесь никакие задачи, а демонстрирую эту обработку на примере, в основном, для людей, которым это в новинку. Увы, не все такие продвинутые, как ты! ;) Но как ты заметил совершенно справедливо, - "кому что". Не пытаюсь навязывать свое мнение...
32. Павел Одинцов (Darklight) 21.03.17 13:49 Сейчас в теме
Респект автору - наконец-то боле менее масштабно подняли эту тему для сферы 1С. Конечно дальше хорошо бы развивать тему с использованием RexV8
33. Николай Щербаченко (romasna) 137 21.03.17 14:13 Сейчас в теме
(32)На самом деле, эта тема довольно широко освещалась здесь, стоит только выполнить поиск. А развитие этой обработки, как я писал уже выше, будет. В частности, в приоритете RexV8. Ну и немного других "бантиков". Я часто возвращаюсь к тому, что уже сделано, в зависимости от настроения. :)