Страница 1 из 2

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

Добавлено: 15 фев 2013 11:36
Ixenon
Здравствуйте, уважаемые разработчики!
Подскажите пожалуйста каким образом используются регулярные выражения в системе поиск/замена.
Хотя бы пару примеров, а то как то непонятно получается.
Пишу в строке поиска строку "KENWOOD\sJE\s[0-9]", ставлю галочку для чекбокса "РВ" и нажимаю кнопку "Найти" программа пишет, что результаты не найдены.
1.jpg
1.jpg (106.1 КБ) 4889 просмотров
или вот так пробую
2.jpg
2.jpg (130.26 КБ) 4889 просмотров
результат аналогичный.
Но стоит только строку поиска изменить на "KENWOOD JE", убрать галочку для чекбокса "РВ" и нажать кнопку "Найти", программа сразу находит первый подходящий результат
3.jpg
3.jpg (129.02 КБ) 4889 просмотров

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

Добавлено: 15 фев 2013 19:54
TechAdmin
Попробуйте так

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

(KENWOOD\sJE\s[0-9]{1,6})

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

Добавлено: 15 фев 2013 20:42
Ixenon
Спасибо сработало. Еще вопрос. В системе автозамены наименования я могу написать в поле найти "(KENWOOD)\s(JK)\s(760)", а в поле заменить "$1 $3 $2" и в результате из такого наименования "KENWOOD JK 760" получится такое "KENWOOD 760 JK" а в системе найти/заменить так сделать у меня не получилось. Не понятно почему, ведь и тут и там одна и та же совокупность действий найти - заменить, а работают получается по разному. Можно ли сделать так, чтобы регулярные выражения в системе "найти/заменить" работали бы так же как в системе автозамены(кнопка замена наименования товара)?

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

Добавлено: 16 фев 2013 14:46
TechAdmin
В системе найти/заменить использован старый алгоритм работы с регулярными выражениями, доработаем этот момент, в новой версии ПЛИ будет работать как вам необходимо.

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

Добавлено: 24 фев 2013 18:57
Ixenon
TechAdmin писал(а):В системе найти/заменить использован старый алгоритм работы с регулярными выражениями, доработаем этот момент, в новой версии ПЛИ будет работать как вам необходимо.
До сих пор не работает, либо работает так, что как серпом по яйцам, например вот результат нажатия кнопки "Заменить все"
1.jpg
1.jpg (79.92 КБ) 4845 просмотров

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

Добавлено: 25 фев 2013 10:15
TechAdmin
По вашему алгоритму как должно было замениться наименование при таких настройках?

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

Добавлено: 25 фев 2013 10:37
Ixenon
TechAdmin писал(а):По вашему алгоритму как должно было замениться наименование при таких настройках?
Алгоритм тут может быть только один. заменяться должна часть строки, которая выделяется регулярным выражением, и заменяться эта выделенная часть строки должна на то, что записано в поле "Заменить"
В общем оба поля должны работать как в системе замены наименования.
Совсем не понятно для чего нужна галочка "РВ" напротив поля "Заменить", огромная просьба объяснить ее предназначение.

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

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

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

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

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

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

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

а у Вас 2 получается:
<strSource> - строка-оригинал (где заменять).
<strReplace> - подстрока для замены (на что заменять).

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

Добавлено: 07 мар 2013 11:38
Ixenon
С установкой обоих галочек работает. Огромное спасибо.