Каталог решений - Использование регулярных выражений (RegExp) в Linux

Использование регулярных выражений (RegExp) в Linux

Использование регулярных выражений (RegExp) в Linux

В наличии

Описывается способ использования регулярных выражений (RegExp) в Linux с использованием тех же компонентов, что и в Windows (COM-объекты VBScript.RegExp).

Категория:

Описание

Задача: Необходимо из 1С использовать регулярные выражения (RegExp) в Linux.
Проблема: В Windows можно использовать COM-объект VBScript.Regexp. В Linux нет COM-объектов.
Решение: Устанавливаем Wine и выполняем скрипт через командную строку.
Исходные данные: Клиент-серверный вариант установки 1С. Клиенты любые, сервер — Linux (в моем случае Debian Wheezy).

Теперь по шагам

1. Установим wine (https://wiki.winehq.org/Debian).

wine ставится на i386 архитектуру.
Проверим, что она у нас стоит:

# dpkg --print-architecture

Если нет, то установим (за подробностями сюда https://wiki.debian.org/ru/Multiarch/HOWTO):

# dpkg --add-architecture i386

Установим репозиторий для установки:

wget -nc https://dl.winehq.org/wine-builds/Release.key
apt-key add Release.key

Добавим в список пакетов (/etc/apt/sources.list или отдельным файлом в папку /etc/apt/sources.list.d) строчку:
deb https://dl.winehq.org/wine-builds/debian/ DISTRO main

где DISTRO — имя вашего дистрибутива (у меня wheezy)

Собственно установка:

# apt-get update
# apt-get install --install-recommends winehq-stable

При попытке установить пакет wine на wheezy возникла ошибка:
"The method driver /usr/lib/apt/methods/https could not be found."
Репозиторий winehq использует протокол https для загрузки.

Решается установкой нужного транспорта на apt:

# apt-get install apt-transport-https

Установим полезный скрипт winetricks (с сайта, т.к. в репозитории может быть сильно устаревшим):

# wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
# chmod +x winetricks
# cp winetricks /usr/bin

Для пользователя (usr1cv8), от которого запущен сервер 1С и  будет запускаться wine настраиваем его окружение:

# su - usr1cv8
$ winecfg

Установим библиотеку для работы с VBScript.

$ winetricks wsh56vb

Со временем может выйти более новая версия библиотеки, тогда будет сообщение типа: "Calling wsh56 is deprecated, please use wsh57 instead".
В этом случае устанавливаем указанную версию библиотеки (в данном случае wsh57vb).

Для платформы x64 сперва создаем окружение win32 (требуется для VBScript).
Здесь создается отдельная папка (на свой вкус, я сделал в домашней папке пользователя 1С) ~/.wine32 с библиотеками своей архитектуры.

$ WINEARCH=win32 WINEPREFIX=~/.wine32 winecfg
$ WINEPREFIX=~/.wine32 winetricks wsh56vb

Теперь о том, как я это использую

У меня есть задачи разбирать полученные СМС и по полученным совпадениям создавать и заполнять тот или иной документ.
Для этого я создаю правила обработки, в котором задаю регулярное выражение. При анализе текста СМС в случае совпадения с регулярным выражением я разбиваю текст СМС на группы (match) и подгруппы (submatch) и использую эти значения для заполнения нужного мне документа.

Скрипт VBScript и его вызов приведен на скриншотах к статье.

Командная строка вызова скрипта:

$ wine cscript.exe z:ИмяФайлаСкрипта z:ИмяФайлаШаблона z:ИмяФайлаАнализируемогоТекста > ИмяФайлаРезультата 2> ИмяФайлаОшибкок

где

  • ИмяФайлаСкрипта — полное имя файла VBScript-скрипта
  • ИмяФайлаШаблона — полное имя файла, в которое записывается шаблон регулярного выряжения
  • ИмяФайлаАнализируемогоТекста — полное имя файла, в которое записывается анализируемый текст
  • ИмяФайлаРезультата — файл, в который перенаправляем вывод работы скрипта (например через WShell.Echo)
  • ИмяФайлаОшибкок — файл, в который будет записаны возможные ошибки обработки скрипта
  • Первые 3 файла предваряем буквой диска "z:" (z — это корень файловой системы для wine).

Примечания:

  1. Код выполняется на сервере, т.е. можно использовать в качестве регламентного задания 1С.
  2. Описанный способ так же работает и в Windows, но для этого возможно понадобятся разрешения администратора на выполнение скриптов (csсript.exe).
  3. Работа ведется через файлы (соответственно медленнее, чем через COM-объекты, вызываемые из 1С в Windows).
     
has been added to your cart:
Оформление заказа