Поиск-замена

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

  1. dmal85_f

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

    Регистрация:
    23 мар 2015
    Сообщения:
    44
    добрый день, есть такая конфигурация шины 31х10,5х15 а нужно получить 31/10,5R15 т.е заменить первый символ х на косую черту а второй символ х на R, подскажите как в поиск замене это реализовать с указанием порядкового номера элемента который нужно заменить
     
  2. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Код:
    х|/[ONCE]
    х|R[ONCE]
     
    dmal85_f нравится это.
  3. dmal85_f

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

    Регистрация:
    23 мар 2015
    Сообщения:
    44
    еще вопросик по нестандартной мне проблеме
    у меня парсер настроен на границы вида 175/65R14 которая потом раскладывается на 3 составляющих 175,65 и 14, но в коде попадаются и значения вида 155R12 т.е без среднего значения, собственно вопрос в том как сделать сначала проверку на слеш и если слеша нет то поиск заменой добавлять нужное значение, к примеру меняем "R" на "/-R" тем самым получаем среднее значение равное "-" если слеш имеется то ничего не делаем.... Пробовал CHECKENTRY но у меня не получилось, ситуация еще осложняется тем что в парсере все поля заняты и редактировать нужно только то что есть
     
  4. Root

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

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

    Код:
    [CHECKENTRY(/)]текст[THENTEXT][REPLACE(|)]1[/REPLACE][ELSETEXT][REPLACE(|)]2[/REPLACE][/CHECKENTRY]
     
    dmal85_f нравится это.
  5. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    У меня похожий вопрос, который не удалось решить предложенным методом.

    Имеется конструкция "88% эластан 12% полиамид". Необходимо второй пробел (после слова "эластан" ) заменить символом "|".

    Подскажите, пожалуйста, как это можно сделать?
     
  6. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    {skip} {skip} |{skip(1)} {skip(2)}{sep}
     
  7. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    Вот ходил я вокруг да около этих {skip(1)} {skip(2)}, подсказку читал, но так и не додумался как это собрать. Спасибо!
     
    Root нравится это.
  8. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    Все таки не срастается у меня. Опишу общую проблему, т.к. там до этого были перестановки.

    Есть текст "полиамид 50%, полиэстер 38%, эластан 12%", который надо привести к виду "50% полиамид|38% полиэстер|12% эластан". Так же могут быть не 3, а 2 параметра. При 2х параметрах цифры выставлял перед текстом конструкцией:
    [LINEMODE]{get}|[START]{get}[END]
    [LINEMODE][START]{skip} {skip} {skip} {skip}[END]|{skip(2)} {skip(1)} {skip(4)} {skip(3)}
    Но это работало только с двумя параметрами.

    Конструкция {skip} {skip} |{skip(1)} {skip(2)}{sep} при двух параметрах работает, а при трех параметрах не получилось ее правильно изменить.

    В общем очень нужна помощь как это все победить "полиамид 50%, полиэстер 38%, эластан 12%" => "50% полиамид|38% полиэстер|12% эластан" и "полиамид 50%, эластан 12%" => "50% полиамид|12% эластан"

    PS При 3х параметрах (полиамид 50%, полиэстер 38%, эластан 12%) для перестановки цифр вперед работает конструкция
    [LINEMODE]{get}|[START]{get}[END]
    [LINEMODE][START]{skip} {skip} {skip} {skip} {skip} {skip}[END]|{skip(2)} {skip(1)} {skip(4)} {skip(3)} {skip(6)} {skip(5)}, но она отказывается работать, если параметра только 2 (полиамид 50%, полиэстер 38%). Есть ли какой-то универсальный вариант?
     
    Последнее редактирование: 16 дек 2018
  9. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    универсальный будет только тогда, когда вы покажете весь список возможный.
    самое идеальное решение это приводить все к единому виду.
    ну и использовать регулярные выражения
     
  10. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.433
    Адрес:
    Latvia
    Примерно так через регулярные выражения
    Код:
    re:([a-zA-Zа-яА-Я\- ]{3,})([0-9\.\,]+)%[\s\t\r\n\,\;]*|$2% $1{sep}
    {sep}{textend}|

    [​IMG]
     
    Kreol нравится это.
  11. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    2018-12-16_10-17-27.png
    Код:
    , |{br}
    [LINEMODE]{get}| {get}
    [LINEMODE] {skip} {skip} |{skip(2)} {skip(1)}
    {br}|{sep}
     
    xLime, inotoxic и kagorec нравится это.
  12. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    Код:
    , |{br}
    [LINEMODE]{get}| {get}
    [LINEMODE] {skip} {skip} |{skip(2)} {skip(1)}
    {br}|{sep}
    Вот это почему-то дало вот такой результат: "полиамид 50%| полиэстер 38%| эластан 12%", т.е. не сработало.

    А вот регулярка дала отличный результат. СПАСИБО! Там добавил только {sep}|{sep}, чтоб пробел после | убрать.

    А где можно почитать про [LINEMODE]? Не нашел этого параметра в поиске/замене.

    Есть ли мануал по регуляркам от команды Content Downloader или понятный мануал с помощью которого можно вот это расшифровать (([a-zA-Zа-яА-Я\- ]{3,})([0-9\.\,]+)%[\s\t\r\n\,\;]*|$2% $1{sep})?
     
    Последнее редактирование: 16 дек 2018
  13. inotoxic

    inotoxic Well-Known Member Пользователи

    Регистрация:
    13 сен 2015
    Сообщения:
    868
    В окне поиска и замены - ПКМ - "дополнительные операторы"
     
  14. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Приложите проект, где это у вас не работает. И укажите, где смотреть.
     
  15. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    Проект прикрепил. 8я граница. Выводится в csv в 7й столбец.

    PS Нашел где проблема. Там {skip}ы ищут пробелы, а у текста не хватает пробела в конце (имеется "полиамид 50%", а надо "полиамид 50% "). Ошибка в строке {get}| {get}. В конце пробел не скопировался. Правильно {get}| {get} (с пробелом на конце).

    PSPS Чуть упростил регулярку. Получилось:
    Код:
    re:([^0-9]+)([0-9]+)%[\s\,]*|$2% $1{sep}
    {sep}{textend}|
     {sep}|{sep}
     

    Вложения:

    Последнее редактирование: 17 дек 2018
  16. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.433
    Адрес:
    Latvia
    Как хорошо что вы самостоятельно всё решили и регулярку составили. :D
     
  17. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Да, форум съел пробелы.
     
  18. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    На самом деле я очень благодарен за помощь и ничуть не умаляю заслуги местных гуру. Без их помощи все было бы гораааздо сложнее. Просто мне интересно не просто подставить предложенные букафки, но и понять как именно работает паттерн, чтобы на его основе решить какую-то подобную задачу в будущем.

    Продолжаю считать CD одним из лучших профессиональных инструментов с помощью которого можно решить ЛЮБУЮ задачу. Авторам просто нижайший поклон.
     
    kagorec и inotoxic нравится это.

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