Снегопат

Обсуждение Снегопата
Текущее время: 23 ноя 2024, 12:57

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: 07 июл 2012, 12:27 
Не в сети

Зарегистрирован: 13 июн 2012, 20:52
Сообщения: 51
Все пытаюсь загуглить, есть ли парсер регулярных выражений для 8.2 без использования COM объекта "VBScript.RegExp"
Не нашел...

Скажем набор функций, делающий то же самое,
Чисто теоретически можно взять исходник оперсорсного парсера и сделать на встроенном языке 1с.
Не факт, что быстро будет работать, но хотя бы будет..
Занимался этим кто-нибудь.. интересно...

Сервак на линухе, веб-клиент, а нужно парсить регулярные выражения на сервере без использования COM
Как быть?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 июл 2012, 12:32 
Не в сети

Зарегистрирован: 04 июн 2012, 09:28
Сообщения: 343
Правильный путь - написать ВК с использованием Native API.
Неправильный, но теоретически работоспособный - вызывать какой-нибудь скрипт на bash/python/что-угодно через КомандаСистемы.
Правда на 14-м релизе под Linux это не работало по непонятным причинам.

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 июл 2012, 13:01 
Не в сети

Зарегистрирован: 13 июн 2012, 20:52
Сообщения: 51
Magister писал(а):
Правильный путь - написать ВК с использованием Native API.
Неправильный, но теоретически работоспособный - вызывать какой-нибудь скрипт на bash/python/что-угодно через КомандаСистемы.
Правда на 14-м релизе под Linux это не работало по непонятным причинам.

скрипт ос мм, интересно..
интересно а вк такую никто не писал ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июл 2012, 09:48 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
Fragster с мисты обещал, когда-то написать скриптик на php с поиском по RegExp. Идея такая - поднимаем web сервер и делаем http запрос к localhost.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июл 2012, 10:00 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Самый прикол, что 1С для работы с юникодом использует ICU, пакет от IBM. И в нем помимо всего прочего, есть и работа с регэкспами.
Т.е. 1С надо всего лишь написать обертку вокруг уже имеющихся функций, чтобы можно было пользоваться из языка 1С.
Дай ка я сейчас в порядке изучения NativeAPI попробую сделать это сам.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июл 2012, 14:16 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2011, 08:20
Сообщения: 98
orefkov писал(а):
Самый прикол, что 1С для работы с юникодом использует ICU, пакет от IBM. И в нем помимо всего прочего, есть и работа с регэкспами.
Т.е. 1С надо всего лишь написать обертку вокруг уже имеющихся функций, чтобы можно было пользоваться из языка 1С.
Дай ка я сейчас в порядке изучения NativeAPI попробую сделать это сам.


ОФФТОПИК: самое интересное что в этой самой библиотеке есть тот самый метод Split который кстати через те же RegExp'ы и выполняется.
Если бы в порядке изучения NativeAPI реализовать методы
1. РазложитьСтрокуВМассивПодстрок()
2. ПолучитьСтрокуИзМассиваПодстрок()

и в довесок

3. ПодставитьПараметрыВСтрокуИзМассива()

тогда такую библиотеку можно не в качестве экспериментов использовать, а в production пускать


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 июл 2012, 10:40 
Не в сети

Зарегистрирован: 13 июн 2012, 20:52
Сообщения: 51
orefkov писал(а):
Самый прикол, что 1С для работы с юникодом использует ICU, пакет от IBM. И в нем помимо всего прочего, есть и работа с регэкспами.
Т.е. 1С надо всего лишь написать обертку вокруг уже имеющихся функций, чтобы можно было пользоваться из языка 1С.
Дай ка я сейчас в порядке изучения NativeAPI попробую сделать это сам.

Было бы прекрасно :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 июл 2012, 14:17 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Вот начинаю пробу.
Скачать

Цитата:
- Видишь суслика?
- Нет.
- И я нет. А он - есть.
(с) ДМБ

Для работы с юникодом V8 использует кроссплатформенную библиотеку ICU, которая помимо
прочего, содержит и функционал по работе с регэкспами. По какой-то непонятной оплошности,
1С не "вытащила" этот функционал "наружу", и пользоваться им из языка 1С возможности нет.

Однако, как всегда, на помощь приходят ВК.
Представляю компоненту, которая строит "мостик" из библиотеки ICU в язык 1С.
Подробнее о regexp'ах в ICU можно посмотреть здесь: http://userguide.icu-project.org/strings/regexp

Компонента выполнена по технологии "NativeAPI", и загружается так:
Код:
   Если не ПодключитьВнешнююКомпоненту("путь\re.dll", "RegEx", ТипВнешнейКомпоненты.Native) Тогда
      Предупреждение("Не удалось подключить ВК");
   КонецЕсли;

Работу проверял в толстом и тонком клиенте, хочется проверить на сервере.

После этого можно создавать объект "V8RegEx" и использовать его для работы. Пример:
Код:
   ре = Новый("V8RegEx");
   ре.Шаблон = "(?i)аа(а)";
   ре.Строка = "Ааа";
   Сообщить(ре.Совпадает());
   Сообщить(ре.КоличествоГрупп);
   Для Номер = 0 По ре.КоличествоГрупп Цикл
      Сообщить("Группа " + Номер + ": " + ре.Группа(Номер) + "  начало=" + ре.Начало(Номер) + " конец=" + ре.Конец(Номер));
   КонецЦикла;
   
   ре.Строка = "ббб";
   Сообщить(ре.Совпадает());
   
   ре.Строка = "аааббб";
   Сообщить(ре.Начинается());
   
   ре.Строка = "аааббюбдАааааАбббва";
   Пока ре.Найти() Цикл
      Сообщить("----------------------");
      Для Номер = 0 По ре.КоличествоГрупп Цикл
         Сообщить("Группа " + Номер + ": " + ре.Группа(Номер) + "  начало=" + ре.Начало(Номер) + " конец=" + ре.Конец(Номер));
      КонецЦикла;
   КонецЦикла;

Свойства объекта:
Шаблон/Pattern
строка, чтение/запись.
Задает регулярное выражение.

Строка/Input
строка, чтение/запись.
Задает исходную строку, к которой будет применятся регулярное выражение.

КоличествоГрупп
число, чтение.
Показывает количество захваченных подгрупп после применения регулярного выражения.
Нулевая группа - всё захваченное выражение.

Методы:
Совпадает()/Matches()
Возвращает - истина, если исходная строка полностью совпадает с регулярным выражением,
иначе - ложь.

Начинается()/LookingAt()
Возвращает - истина, если начало исходной строки совпадает с регулярным выражением,
иначе - ложь.

Найти() / Find()
Ищет очередное вхождение выражения в исходной строке.
Возвращает - истина, если вхождение найдено, иначе - ложь.

Группа(НомерГруппы) / Group(Idx)
Возвращает значение захваченной подгруппы.
Нулевая группа - все захваченное выражение.

Начало(НомерГруппы) / Begin(Idx)
Возвращает индекс начала позиции захваченной подгруппы.
Нулевая группа - все захваченное выражение.

Конец(НомерГруппы) / End(Idx)
Возвращает индекс следующий за конечной позицией захваченной подгруппы.
Нулевая группа - все захваченное выражение.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 июл 2012, 14:59 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Очень круто!

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 июл 2012, 15:03 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Саш, мне нужны баг-репорты, а не респекты :)
Хотя спасибо, конечно же.
Работает ли на сервере?
Работает ли под разными релизами 8.2 ?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB