Обратный порядок слов Поиск-Замена

Тема в разделе "Решение различных задач по парсингу", создана пользователем uskirill, 25 апр 2017.

  1. uskirill

    uskirill Member Пользователи

    Регистрация:
    14 дек 2016
    Сообщения:
    35
    Добрый день всем!

    Возникла такая ситуация, нужно изменить порядок слов с конца в начало.
    Например:
    из слов A;B;C нужно получить C;B;A

    Помогите пожалуйста.
     
  2. t@lev@n

    t@lev@n Member Пользователи

    Регистрация:
    16 июн 2014
    Сообщения:
    88
    Какой вопрос, такой и ответ)
    re:^([^;]+);([^;]+);([^;]+)$|$3;$2;$1
     
  3. uskirill

    uskirill Member Пользователи

    Регистрация:
    14 дек 2016
    Сообщения:
    35
    Спасибо за подсказку, а есть более универсальная схема?

    Например если будет попадаться по 4 слова: A;B;C;D или по 2 слова A;B
     
  4. uskirill

    uskirill Member Пользователи

    Регистрация:
    14 дек 2016
    Сообщения:
    35
    Попытался это сделать макросом [SORT] c параметром {invert}, но он сортирует только первые два слова, а третье остается на месте
     
  5. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Возможно придется использовать набор регулярок, если там совпадения бывают с 2-5 знаениями
    Код:
    re:^([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)$|$5;$4;$3;$2;$1
    re:^([^;]+);([^;]+);([^;]+);([^;]+)$|$4;$3;$2;$1
    re:^([^;]+);([^;]+);([^;]+)$|$3;$2;$1
    re:^([^;]+);([^;]+)$|$2;$1
     
  6. uskirill

    uskirill Member Пользователи

    Регистрация:
    14 дек 2016
    Сообщения:
    35
    Попробовал ваш код, но не во всех случаях переворачивает.
    Вообщем нужно чтобы категории записывались в CSV файл наоборот, начиная с самой младшей.
    После вставки вашего кода где 4 категории парсится там все норм, а где 3 изменений нет.
    Не могу понять где ошибка. Посмотрите проект плиз )
     

    Вложения:

  7. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Проект особо не анализировал (слишком много наворочено непонятно для чего), проверил регулярные выражения - они работают, реверсивно раставляют данные которые перечислены через ;
    [​IMG]
     
  8. uskirill

    uskirill Member Пользователи

    Регистрация:
    14 дек 2016
    Сообщения:
    35
    В проекте,к сожалению, не работают с 2 и 3 словами. с 4 работают.
    Например ссылка № 26 (из проекта), должно быть наоборот:
    Ссылки недоступны для гостей
     
  9. uskirill

    uskirill Member Пользователи

    Регистрация:
    14 дек 2016
    Сообщения:
    35
    Нашел в чем проблема. Если в настройке повторяющихся границ минимальное количество циклов ставлю 4, то 2 и 3 словами не работает, если выставляю 0, тогда все работает. Но Тогда вся строка в файле CSV смещается налево.

    Вообщем дописал кода и все заработало:
    re:^([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)$|$5;$4;$3;$2;$1
    re:^([^;]+);([^;]+);([^;]+);([^;]+)$|$4;$3;$2;$1
    re:^([^;]+);([^;]+);([^;]+)$|$3;$2;$1
    re:^([^;]+);([^;]+)$|$2;$1
    re:^([^;]+);([^;]+);;$|$2;$1;;
    re:^([^;]+);([^;]+);([^;]+);$|$3;$2;$1;
     
    Последнее редактирование: 25 апр 2017
  10. t@lev@n

    t@lev@n Member Пользователи

    Регистрация:
    16 июн 2014
    Сообщения:
    88
    Вот если бы сразу описал всю суть "задачи", то решение было бы найдено гораздо быстрее...
    В твоем случае должно хватить и этих трех строк:
    re:^([^;]+);([^;]+);([^;]+);([^;]+)$|$4;$3;$2;$1
    re:^([^;]+);([^;]+);([^;]+);$|$3;$2;$1;
    re:^([^;]+);([^;]+);;$|$2;$1;;

    но если делать пустые ячейки слева, то можно и одной строкой:
    re:^([^;]*);([^;]*);([^;]*);([^;]*)$|$4;$3;$2;$1
     
    Последнее редактирование: 26 апр 2017
    uskirill нравится это.
  11. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    С макросом [SORT] все в порядке! Проблема у вас в другом.

    2017-04-26_09-40-11.png
     
  12. t@lev@n

    t@lev@n Member Пользователи

    Регистрация:
    16 июн 2014
    Сообщения:
    88
    Сергей, а почему про него (макрос [SORT]) ни слова в Ссылки недоступны для гостей?
     
  13. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Решили минимизировать количество переходов в систему помощи и стали делать краткие подсказки к макросам в самой программе:
    2017-04-26_09-58-00.png

    2017-04-26_09-59-00.png
     
  14. uskirill

    uskirill Member Пользователи

    Регистрация:
    14 дек 2016
    Сообщения:
    35
    Не совсем понятно как макрос сортирует, в алфавитном порядке или просто наоборот, не учитывая алфавит. Нигде инфы об этом нет.
     
  15. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Эту подсказку в редакторе шаблона вывода дополнил.
     
  16. t@lev@n

    t@lev@n Member Пользователи

    Регистрация:
    16 июн 2014
    Сообщения:
    88
    В таком варианте есть как минимум одно но:
    Отсутствует поиск по описанию.

    Вводя текст в строке поиска программа ищет только по самим макросам, соответственно введя ключевое слово из описания мы ничего не найдем. А ведь макросы добавляются, и не всегда известно, что есть макрос для решения конкретной задачи.
    В идеале дублировать в системе помощи хотя бы с кратким описанием. Как вариант одна страничка с кратким описанием всех макросов, ну или несколько тематических.
     
    Последнее редактирование: 27 апр 2017
    kagorec, uskirill и Root нравится это.
  17. KHV

    KHV New Member Пользователи

    Регистрация:
    15 мар 2011
    Сообщения:
    23
    Подскажите, пожалуйста, как можно изменить порядок слов. Нужно первые 2 слова перенести после всего текста.
    Пример:
    Генератор бензиновый ЗДЕСЬ_МОЖЕТ_БЫТЬ_РАЗНОЕ_КОЛИЧЕСТВО_СЛОВ
    Нужно получить:
    ЗДЕСЬ_МОЖЕТ_БЫТЬ_РАЗНОЕ_КОЛИЧЕСТВО_СЛОВ - генератор бензиновый

    UPD: Вопрос решен с помощью совета из этого сообщения - https://forum.sbfactory.ru/threads/perestavit-slova-mestami.5164/#post-30544
     
    Последнее редактирование: 23 янв 2021

Поделиться этой страницей