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

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

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

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

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

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

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

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

Не, труд, конечно, большой.. но есть гугл, есть онлайн-сервисы..
VladC#; premier; kraynev-navi; +3 Ответить 1
19. Sergey Andreev (starik-2005) 1134 14.03.17 17:19 Сейчас в теме
(0)
Особенности: используются модальные и синхронные вызовы.
А зачем?
20. Николай Щербаченко (romasna) 209 14.03.17 18:24 Сейчас в теме
(19)Извини меня за непонимание, но к чему этот вопрос? Если тебя действительно волнует ответ на него, скачай обработку и посмотри где я использую эти вызовы и для чего. Я не посчитал нужным убирать модальные вызовы, - мне они не мешают... мне с ними легче. А если мне что-то не нравится в программном коде и он доступен, - я его меняю.
21. Sergey Andreev (starik-2005) 1134 14.03.17 23:06 Сейчас в теме
(20)
но к чему этот вопрос?
Так XXI в. на дворе, не?
22. Николай Щербаченко (romasna) 209 14.03.17 23:49 Сейчас в теме
(21)Лучшее - враг хорошего. ;)
23. Sergey Andreev (starik-2005) 1134 15.03.17 10:48 Сейчас в теме
(22)
Лучшее - враг хорошего
Не стоит верить народной мудрости, распиаренной Шахиджаняном - тут он прав лишь в том, что если плохому танцору жмут ботинки, то лучше бы ему и не пытаться танцевать лучше. А кто способен - тот обязан стремиться к лучшему, иначе так и будет ключи подавать Вот, например, лучшее - это регулярные выражения, а хорошее - это сотни if-then-else. Многие по Вашей же логике выбирают второе, "и оправдана сия премудрость чадами ее" (с).
24. Николай Щербаченко (romasna) 209 15.03.17 13:00 Сейчас в теме
(23)Сергей, я тебя услышал. Я наблюдаю за тобой с того самого момента, как ты сделал свой второй (9) комментарий.
Спасибо за усилия, направленные на улучшение обработки. Немногие способны проявлять столько заботы в случаях, когда им эта обработка, в-общем-то, безразлична. :)
25. Николай Щербаченко (romasna) 209 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) 209 16.03.17 20:13 Сейчас в теме
28. Андрей Ильин (su_mai) 87 17.03.17 03:54 Сейчас в теме
(8) Это понятно, часто можно найти выход, но такой код никто не даст в типовую "конфу" включить. Непосредственной поддержки регулярных выражений, явно задекларированной 1С, нет.
29. Sergey Andreev (starik-2005) 1134 17.03.17 10:24 Сейчас в теме
(28)
такой код никто не даст в типовую "конфу" включить. Непосредственной поддержки регулярных выражений, явно задекларированной 1С, нет.
Такой код уже много куда включен. И это явно задекларированный 1С способ, ибо у них в системе есть объект (ОбъектXDTO), тип которого системой проверяется на петтерн регулярного выражения. Он есть в конфигураторе, так что нельзя сказать, что это не 1С.
30. Александр Кузин (sashocq) 189 20.03.17 21:57 Сейчас в теме
Труд проделан громадный. Но ценность (в виде накопленного опыта) имеет только для автора велосипеда.
Сам я не вижу смысла менять легкий, удобный и бесплатный Expresso на эту обработку. Он и дерево строит и показывает что где нашлось, все регэкспы делаю в нём. Тут, видимо, кому что. Онлайн сервисами пользоваться не люблю, предпочитаю десктопные приложения. RegexBuddy по скриншотам понравился. Но, похоже, тот же Expresso, только за 40$. Если кто-нибудь посоветует ещё инструментов, естественно, посмотрю с интересом.
Публикацию прочитал по диагонали, ибо бОльшую часть текста автор решает какую-то свою задачу. Саму же обработку оценил по скриншотам - желания скачать не появилось. Создалось впечатление, что это такой большой тяжёлый монстр, с которым можно работать только в полный экран.
31. Николай Щербаченко (romasna) 209 20.03.17 22:31 Сейчас в теме
(30)Извини, но если бы ты читал, а не "прочитал по диагонали", то заметил бы, что я не решаю здесь никакие задачи, а демонстрирую эту обработку на примере, в основном, для людей, которым это в новинку. Увы, не все такие продвинутые, как ты! ;) Но как ты заметил совершенно справедливо, - "кому что". Не пытаюсь навязывать свое мнение...
32. Павел Одинцов (Darklight) 21.03.17 13:49 Сейчас в теме
Респект автору - наконец-то боле менее масштабно подняли эту тему для сферы 1С. Конечно дальше хорошо бы развивать тему с использованием RexV8
33. Николай Щербаченко (romasna) 209 21.03.17 14:13 Сейчас в теме
(32)На самом деле, эта тема довольно широко освещалась здесь, стоит только выполнить поиск. А развитие этой обработки, как я писал уже выше, будет. В частности, в приоритете RexV8. Ну и немного других "бантиков". Я часто возвращаюсь к тому, что уже сделано, в зависимости от настроения. :)
34. Валентин Бомбин (so-quest) 126 10.05.17 09:41 Сейчас в теме
Статья понравилась. Однозначно уважуха за такое.
Вопрос - а что помешало сделать свой движок для регэкспов? что бы не использовать vbscript?
35. Николай Щербаченко (romasna) 209 10.05.17 09:55 Сейчас в теме
(34)Оставляю в стороне оценку сложности разработки такого движка в 1С. Но я знаю, что VBScript отрабатывает регулярные выражения очень быстро (и этого достаточно). А насчет эффективности движка, запрограммированного в 1С, есть у меня сомнения. К тому же, если бы фирма 1С посчитала нужным и важным, то обеспечила бы прямой доступ к движку, который использует сама... но этого мы не наблюдаем.
36. Sergey Andreev (starik-2005) 1134 10.05.17 11:04 Сейчас в теме
(35)
но этого мы не наблюдаем
Так не туда смотрите )))
37. Николай Щербаченко (romasna) 209 10.05.17 12:28 Сейчас в теме
(36)Мне знакомо, что регулярные выражения доступны через офсеты в XDTO. И знакомо также, что такое их использование позволяет разве что проверить соответствие строки регулярному выражению. Не более. Куда еще нужно посмотреть, чтобы можно было выполнить замену? Или найти набор строк, удовлетворяющих регулярному выражению. И все это путем встроенных в 1С механизмов.
При этом я не беру в расчет усилия авторов разработок в 1С, например, такие: Регулярные выражения без COM объектов и внешних компонент - к платформе это не имеет отношения.
Куда смотреть еще?
38. Sergey Andreev (starik-2005) 1134 10.05.17 17:02 Сейчас в теме
(37)
Куда смотреть еще?
Куда-нить сюда.1С юзает данную либу. Думаю, что можно как-то к ней нарыть доступ без отдельных внешних компонент. В линухе это обычная .so-либа, как в винде - не в курсе. Подключается ли она, как нативная компонента - не в курсе, но 1С ее юзает, ибо без нее не работает. Про регулярки и icu есть тут.
39. Николай Щербаченко (romasna) 209 10.05.17 17:11 Сейчас в теме
(38)Если сможешь получить этот отдельный доступ, - поделись с нами, пожалуйста. А я пока поюзаю внешнюю компоненту Орефкова, для указанной тобой ICU, или VBScript (в силу недалекого ума). :)
40. Sergey Andreev (starik-2005) 1134 10.05.17 17:17 Сейчас в теме
(39)
А я пока поюзаю
А я на Linux не могу это юзать. Отсутствие кроссплатформенности - это для меня серьезный минус.

Ну и то, что часть функционала все-таки вытащена в 1С в тот же XDTO-механизм, некоторым образом заставляет меня с осторожностью относится к словам некоторых товарищей.
41. Николай Щербаченко (romasna) 209 10.05.17 17:19 Сейчас в теме
(40)Каких товарищей? И к каким словам?
42. Sergey Andreev (starik-2005) 1134 10.05.17 22:26 Сейчас в теме
(41)
И к каким словам?
Ну, например, к этим:
Для работы с юникодом V8 использует кроссплатформенную библиотеку ICU, которая помимо прочего, содержит и функционал по работе с регулярными выражениями. По какой-то неизвестной причине, 1С не "вытащила" этот функционал "наружу", и пользоваться им из языка 1С возможности нет.
Оставьте свое сообщение