Использование регулярных выражений в системе найти/заменить

Помощь пользователям в работе с программой E-Trade PriceList Importer
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

Здравствуйте, уважаемые разработчики!
Подскажите пожалуйста каким образом используются регулярные выражения в системе поиск/замена.
Хотя бы пару примеров, а то как то непонятно получается.
Пишу в строке поиска строку "KENWOOD\sJE\s[0-9]", ставлю галочку для чекбокса "РВ" и нажимаю кнопку "Найти" программа пишет, что результаты не найдены.
1.jpg
1.jpg (106.1 КБ) 4891 просмотр
или вот так пробую
2.jpg
2.jpg (130.26 КБ) 4891 просмотр
результат аналогичный.
Но стоит только строку поиска изменить на "KENWOOD JE", убрать галочку для чекбокса "РВ" и нажать кнопку "Найти", программа сразу находит первый подходящий результат
3.jpg
3.jpg (129.02 КБ) 4891 просмотр
Аватара пользователя
TechAdmin
Администратор
Сообщения: 4286
Зарегистрирован: 27 авг 2008 14:30

Попробуйте так

Код: Выделить всё

(KENWOOD\sJE\s[0-9]{1,6})
С уважением, поддержка ElbuzGroup.
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

Спасибо сработало. Еще вопрос. В системе автозамены наименования я могу написать в поле найти "(KENWOOD)\s(JK)\s(760)", а в поле заменить "$1 $3 $2" и в результате из такого наименования "KENWOOD JK 760" получится такое "KENWOOD 760 JK" а в системе найти/заменить так сделать у меня не получилось. Не понятно почему, ведь и тут и там одна и та же совокупность действий найти - заменить, а работают получается по разному. Можно ли сделать так, чтобы регулярные выражения в системе "найти/заменить" работали бы так же как в системе автозамены(кнопка замена наименования товара)?
Аватара пользователя
TechAdmin
Администратор
Сообщения: 4286
Зарегистрирован: 27 авг 2008 14:30

В системе найти/заменить использован старый алгоритм работы с регулярными выражениями, доработаем этот момент, в новой версии ПЛИ будет работать как вам необходимо.
С уважением, поддержка ElbuzGroup.
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

TechAdmin писал(а):В системе найти/заменить использован старый алгоритм работы с регулярными выражениями, доработаем этот момент, в новой версии ПЛИ будет работать как вам необходимо.
До сих пор не работает, либо работает так, что как серпом по яйцам, например вот результат нажатия кнопки "Заменить все"
1.jpg
1.jpg (79.92 КБ) 4847 просмотров
Аватара пользователя
TechAdmin
Администратор
Сообщения: 4286
Зарегистрирован: 27 авг 2008 14:30

По вашему алгоритму как должно было замениться наименование при таких настройках?
С уважением, поддержка ElbuzGroup.
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

TechAdmin писал(а):По вашему алгоритму как должно было замениться наименование при таких настройках?
Алгоритм тут может быть только один. заменяться должна часть строки, которая выделяется регулярным выражением, и заменяться эта выделенная часть строки должна на то, что записано в поле "Заменить"
В общем оба поля должны работать как в системе замены наименования.
Совсем не понятно для чего нужна галочка "РВ" напротив поля "Заменить", огромная просьба объяснить ее предназначение.
Аватара пользователя
TechAdmin
Администратор
Сообщения: 4286
Зарегистрирован: 27 авг 2008 14:30

Если не стоит флажок "РВ" в поле "Заменить", тогда будет заменяться текст найденный регулярным выражением из поля "Найти", текстом из поля "Заменить".
Если стоит флажок "РВ" в поле "Заменить", тогда можно применять конструкции вида "$1 $3 $2".
При активации двух флажков "РВ" полностью используется поиск/замена на основании рег. выражений.
Фактически используется данная функция VBScript:

Код: Выделить всё

Замена соответствующих шаблону вхождений в строке-оригинале на указанную подстроку. Возвращает (возможно) изменённую строку.
Regexp.Replace(<strSource>,<strReplace>)
Параметры:
    <strSource> - строка-оригинал (где заменять).
    <strReplace> - подстрока для замены (на что заменять).
С уважением, поддержка ElbuzGroup.
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

TechAdmin писал(а):Если не стоит флажок "РВ" в поле "Заменить", тогда будет заменяться текст найденный регулярным выражением из поля "Найти", текстом из поля "Заменить".
Если стоит флажок "РВ" в поле "Заменить", тогда можно применять конструкции вида "$1 $3 $2".
Огромное спасибо за разъяснение! Хотелось бы узнать когда оно так заработает?
Спрашиваю в связи с тем, что немного выше я написал о том, что работает непонятно как.
На картинке видно и то, что я указал в поле "Найти", и то, что я указал в поле "Заменить", и результат в виде части СТУС, где у найденных товаров в поле "Наменование №1" заменилось вообще всё, на то, что было в поле "Заменить"

И вообще у Вас функция не совсем понятная какая то, по логике 3 параметра должно быть.
1. Где заменять.
2. Что искать. (сюда попадает текст из поля "найти")
3. Чем заменить. (сюда попадает текст из поля "заменить")

а у Вас 2 получается:
<strSource> - строка-оригинал (где заменять).
<strReplace> - подстрока для замены (на что заменять).
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

С установкой обоих галочек работает. Огромное спасибо.
Ответить

Вернуться в «Техническая поддержка программы E-Trade PriceList Importer»