извлечение артикула из наименования товара

Тема в разделе "Функции поиск-замены и регулярные выражения", создана пользователем Azza, 5 окт 2021.

  1. Azza

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

    Регистрация:
    26 сен 2021
    Сообщения:
    21
    Город:
    Архангельск
    Дано: есть наименования товара наподобии: "Взломостойкий сейф MDTB Bastion-M 46 E"
    нужно извлечь из наименования часть: "MDTB Bastion-M 46 E"

    паршу наименование в границу <CD_GRAN_1>и далее работаю с ней.
    пробовал использовать макрос EXTRACTID со следующими параметрами:
    [EXTRACTID]
    {EXTRACT_RULES}rus,eng,digits,caps{/EXTRACT_RULES}
    {ROUTE}rev{/ROUTE}
    {REPLACE_BEFORE}({skip}|{/REPLACE_BEFORE}
    {REPLACE_AFTER} |{/REPLACE_AFTER}
    {SOURCE}<CD_GRAN_1!>{/SOURCE}
    [/EXTRACTID]

    но получаю только "M 46 E"

    помогите пожалуйста настроить регулярку нужным способом.
     
  2. masrub

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

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    Еще дайте примеры текста, по 1 делать бесполезно. По одной строчке просто удалить все Русские буквы и не париться.
     
  3. Azza

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

    Регистрация:
    26 сен 2021
    Сообщения:
    21
    Город:
    Архангельск
    вообще это выход, ибо остальное как раз латиницей и идет, русские если и есть то изредка, их проще пробежаться ручками исправить наверное...
    а чтобы удалить все русские - в REPLACE_AFTER - пишем rus? или как-то иначе?
     
  4. masrub

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

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    в поиск-замена для границы вставьте это
    re:[А-Яа-я]+[\s]|
     
    Azza нравится это.
  5. Azza

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

    Регистрация:
    26 сен 2021
    Сообщения:
    21
    Город:
    Архангельск
    спасибо большое!
     
  6. Azza

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

    Регистрация:
    26 сен 2021
    Сообщения:
    21
    Город:
    Архангельск
    всё таки проблема:
    пример: Мебельный сейф MDTB ES-30.Е - нужно выбрать все символы, которые идут после того как встретим заглавную большую латинскую букву
    в тренажере регулярки задаю: [А-я \d.\\\.\-]*([A-zА-я \\\-\.\d]*), всё работает, получаем MDTB ES-30.Е
    Но в программе когда в поиске и замене дополнительных настроек границ пишу тоже самое ( re:[А-я \d.\\\.\-]*([A-Za-zА-я \\\-\.\d]*) ), он находит всю строку, помогите пожалуйста.
     
  7. masrub

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

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    в поиск-замена для границы вставьте это
    re:[A-Z]|[START]$0
    {skip}[START]|
    [START]|
     
    Azza нравится это.
  8. Azza

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

    Регистрация:
    26 сен 2021
    Сообщения:
    21
    Город:
    Архангельск
    огромное спасибо! всё заработало, а можете еще для общего развития написать что означает [START]$0 ?
     
  9. masrub

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

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    [START] просто любая метка
    $0 данные найденные в регулярке (до/после) Поиграйтесь с цифрами 0,1,2
     
    Root и Azza нравится это.

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