Регулярные выражения

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

27 фев 2012 15:14

Понял, Вас. Спасибо за разъяснение. Учту эту особенность на будущее.
Да, поиск по словам вероятно подошел бы. Или другими словами поиск с учетом пробелов.
Аватара пользователя
TechAdmin
Администратор
Сообщения:4286
Зарегистрирован:27 авг 2008 14:30

27 фев 2012 15:18

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

27 фев 2012 19:24

Огромное спасибо, это будет весьма полезное расширение!

В книге Филда есть интересное предложение
При дополнительной поддержке со стороны конкретной утилиты или языка программирования регулярные выражения способны вставлять, удалять, выделять и выполнять самые невероятные операции с текстовыми данными любого вида.
Вот по этому поводу хочу поинтересоваться о следующем:
Если можно использовать систему автозамены текста, с использованием регулярных выражений с целью поиска и замены, например, повторений, то каким образом это работает? И каким должен быть в этом случае синтаксис?

Например выражение выглядит так:
1.jpg
1.jpg (19.66КБ)10220 просмотров
Ищет любые повторения букв/слов(разделены пробелом(ами)) подряд. Можно ли его использовать в системе автозамены текста, и если можно, то что нужно написать в поле/полях "Найти"/"Заменить на", чтобы найденное повторение, в данном случае Samsung Samsung, заменилось на одно слово "Samsung" Интересует именно применение регулярных выражений.
Ixenon
Сообщения:743
Зарегистрирован:19 ноя 2011 09:03

28 фев 2012 13:16

Здравствуйте, уважаемые разработчики!
Продолжая тему, прошу помочь разобраться в следующей ситуации.

Решил использовать регулярное выражение в системе автозамены текста.
Протестировал:
картинка 1
1.jpg
1.jpg (29.61КБ)10217 просмотров
Тут как бы работает.
Создал правило автозамены текста и запустил импорт. Результат получился таким:
картинка 2
2.jpg
2.jpg (73.26КБ)10217 просмотров
На картинке видно, что программа с помощью данного выражения указанного в поле "Найти" нашла текст и заменила его на текст указанный в поле "Заменить на".
Далее поле "Заменить на" я очистил и снова запустил импорт. Результат получился таким:
картинка 3
3.jpg
3.jpg (78.61КБ)10217 просмотров
Т.е. в итоге замены никакой не произошло.
Далее я установил галочку в поле "У", при наведении мышкой на которое появляется следующая подсказка "Удалить текст поиска в исходной строке" и снова запустил импорт. Результат получился аналогичным предыдущему:
картинка 4
4.jpg
4.jpg (87.19КБ)10217 просмотров
Т.е. в итоге получается, что программа данное регулярное выражение понимает, с помощью него может находить какой то тект* и заменять его на текст введенный в поле "Заменить на". А вот удалять найденный текст категорически отказывается.

И это еще не все. При замене, результат которой видно на второй картинке данного поста, не учитываются пробелы, что не есть нелогично, исходя из того, что пробелы не учитываются(не удаляются из строки в которой происходит замена) даже с установленным флагом в поле с наименованием "УП" т.е. в результате между заменяемым текстом(в том случае это было 5 подчеркиваний подряд "_____" ) и следующим за ним всегда присутствует пробел.

Хотелось бы узнать что тут можно сделать.
Вся прелесть использования регулярных выражений в данной системе автозамены текста раскрывается в полной мере только при использовании регулярных выражений, для поиска и замены текста. Причем с полной поддержкой, т.е. и при поиске, и при замене. А Сейчас получается, что регулярные выражения реализованы лишь частично и то только при поиске.

какой то текст - данное словосочетание я написал специально, т.к. если в поле "Найти" написать следующее регулярное выражение (^LED), а в поле "заменить на" написать например пять пятерок "55555", то в этом случае в обрабатываемой строке найдутся все последовательности букв вида "LED" и заменятся на текст введеный в поле "заменить на" хотя по логике из регулярного выражения следует, что заменять нужно именно тот текст, который "совпадает с искомым" и "находится в начале строки"

В общем есть над чем поработать.
В итоге получаются следующие вопросы:
1. Каков должен быть порядок действий, в случае если я хочу найти какой-либо текст с помощью регулярного выражения и удалить его?
2. Планируется ли реализация полной поддержки регулярных выражений в системе автозамены наименований? Т.е. поиск с учетом синтаксиса регулярных выражений и замена найденного с учетом синтаксиса регулярных выражений. На конкретном примере получается, что если регулярное выражение выглядит так (^LED), то в этом случае должно быть найдено слово "LED", и заменено/удалено только в тех случаях когда данное слово расположено в начале строки.

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

28 фев 2012 15:21

Вышлите вашу тестовую БД, мы проверим.
С уважением, поддержка ElbuzGroup.
Ixenon
Сообщения:743
Зарегистрирован:19 ноя 2011 09:03

28 фев 2012 15:51

Тестовую базу выслал.

Кстати, я нашел решение своего первого вопроса самостоятельно, может еще кому то пригодиться.
1.jpg
1.jpg (46.27КБ)10215 просмотров
Работает это следующим образом:
1. Заменяем все, что хотим с помощью регулярных выражений(первые 4 строки) на, нечто однозначно в прайсе не присутствующее. Я использовал для этого 10 подряд идущих знаков подчеркивания "__________"
2. Для регулярных выражений галочку в поле "УП" можно не устанавливать, т.к. толку от нее ноль.
3. В последней строке прописываем удаление десяти идущих подряд знаком подчеркиваний, после которых идет знак пробела(которого на картинке не видно), устанавливаем галочки как на рисунке и все! Результат достигнут :-)

При использовании подобного подхода, нужно иметь в виду, что если текст который находит ваше выражение, встречается в обрабатываемой строке больше одного раза, то заменятся все повторения. И не важно, что само регулярное выражение указывает, что текст этот должен находиться, например только в начале строки.
Far
Сообщения:57
Зарегистрирован:02 сен 2011 08:44

16 апр 2012 11:42

Планируется ли реализация полной поддержки регулярных выражений в системе автозамены наименований? Т.е. поиск с учетом синтаксиса регулярных выражений и замена найденного с учетом синтаксиса регулярных выражений. На конкретном примере получается, что если регулярное выражение выглядит так (^LED), то в этом случае должно быть найдено слово "LED", и заменено/удалено только в тех случаях когда данное слово расположено в начале строки.

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

18 апр 2012 08:45

Исправлять тут на самом деле не чего.
Поддержка регулярных выражений в программе, это не от языка программирования зависит, а от разработки данной программы.
Никто просто еще не предлагал добавить реализацию данной функциональности к существующему механизму регулярных выражений, вот и не работает :-)
Так что не надо на разработчиков бочку катить.
Ixenon
Сообщения:743
Зарегистрирован:19 ноя 2011 09:03

12 июл 2012 14:52

Огромное спасибо Вам, товарищи разработчики, за внедрение полного синтаксиса регулярных выражений!
Всем кому интересно разобраться, можете скачать прикрепленный к данному топику файл скачанный от сюда.
Там можно в Excel легко и просто тестировать всякие регулярные выражения.
P.S. Кстати на том форуме, возможно, есть и поновее файлик.
P.S.S. Всем кто хочет просветиться по поводу регулярных выражений, советую прочитать следующую книгу: Регулярные выражения, 3-е издание. Автор: Джеффри Фридл
Вложения
_RegExp_05_01_1.zip
(81.48КБ)411 скачиваний
zeol
Сообщения:64
Зарегистрирован:04 янв 2015 12:28

04 янв 2015 12:51

Здравствуйте! Подскажите, пожалуйста, сейчас осваиваю PLI и регулярные выражения.
Есть наименование товара в прайсе столбец F вида: Ноутбук Acer Aspire V5-131-10072G32nkk (NX.M89EU.005) Black; 11.6" (1366x768) LED / Intel Celeron 1007U (1.5 ГГц) / RAM 2ГБ / HDD 320ГБ / Intel HD / Без ОД / LAN / Wi-Fi / Linux / 1,38 кг / черный
Задача отделить регулярными выражениями Наименование и Описание (краткое описание).
Для того, чтобы отделить наименование из столбца F от остального текста до точки с запятой использую РВ берет весть текст в строке до символа точка с запятой. Все работает как надо. Получаю: Ноутбук Acer Aspire V5-131-10072G32nkk (NX.M89EU.005) Black

Вторая задача создать краткое описание из наименования столбец F. Пробую такое РВ

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

([^;]*/)
при нажатии тест все хорошо
Скриншот 2015-01-04 12.41.39.png
Скриншот 2015-01-04 12.41.39.png (214.97КБ)6585 просмотров


Вот настройки:
Скриншот 2015-01-04 12.46.49.png
Скриншот 2015-01-04 12.46.49.png (251.18КБ)6585 просмотров


Делаю импорт прайса. Наименование отделяется отлично, а краткое описание остается как в прайсе, т.е. Ноутбук Acer Aspire V5-131-10072G32nkk (NX.M89EU.005) Black; 11.6" (1366x768) LED / Intel Celeron 1007U (1.5 ГГц) / RAM 2ГБ / HDD 320ГБ / Intel HD / Без ОД / LAN / Wi-Fi / Linux / 1,38 кг / черный, а нужно чтобы было 11.6" (1366x768) LED / Intel Celeron 1007U (1.5 ГГц) / RAM 2ГБ / HDD 320ГБ / Intel HD / Без ОД / LAN / Wi-Fi / Linux / 1,38 кг / черный

Есть знающие, чтобы подсказать что я не так сделал? Галочка ЗЕП убрана. Регулярные выражения прописаны в Настройках прайса=>Дополнительно=>Настройка регуляных выражений. Там для каждой категории.
Вот еще проверил:
Скриншот 2015-01-04 13.45.29.png
Скриншот 2015-01-04 13.45.29.png (206.83КБ)6585 просмотров
Ответить

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