Как извлечь первый символ в слове?

Тема в разделе "Решение различных задач по парсингу", создана пользователем olivergreen, 15 ноя 2019.

  1. olivergreen

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

    Регистрация:
    28 янв 2013
    Сообщения:
    31
    Приветствую!
    Кто может подсказать, как мне "извлечь" первую букву из слова? У меня задача сгенерировать адреса типа: some-segment/a/anaconda, some-segment/z/zebra

    Примеры regexp для Npp не сработали...

    Заранее благодарен!
     
  2. Root

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

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

    Макрос шаблона вывода [COPY].

    Код:
    [COPY:1|1]Слово[/COPY]
     
    kagorec и olivergreen нравится это.
  3. olivergreen

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

    Регистрация:
    28 янв 2013
    Сообщения:
    31
    Очень круто!
    Пошел обновлять знания. Уж очень много нового для меня появилось )
     
    Root нравится это.
  4. SEOFEDOR

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

    Регистрация:
    1 ноя 2018
    Сообщения:
    30
    Тут каждый день открытие)
     
  5. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Порой открытия не только для новичков).
     
  6. olivergreen

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

    Регистрация:
    28 янв 2013
    Сообщения:
    31
    И снова здравствуйте! ))
    Что-то перестало работать )) Подскажите как решить следующую проблему. У меня задача сгенерировать адреса типа: some-segment/a/anaconda, some-segment/z/zebra

    Макрос [COPY] перестал работать внутри [DFN] когда эта конструкция находится в шаблоне вывода.
    Код:
    [DFN][CLEAR][LOWERCASE][TRANSLITE]images/software/[COPY:1|1]<CD_GRAN_1!>[/COPY]/<CD_GRAN_1!>/<CD_GRAN_1!>-icon[/DFN]<DOWNLOADFILE><CD_GRAN_3!></DOWNLOADFILE>|||Иконка [VARF:name]
    Здесь в адресе не создастся дополнительный сегмент из первой буквы границы. Результатом будет что-то вроде: images/software/aimp/aimp-icon.png|||Иконка AIMP

    А этот код уже работает как и ожидается, но он находится в настройках повторяющихся границ:
    Код:
    [DFN][CLEAR][LOWERCASE][TRANSLITE]images/software/[COPY:1|1]<CD_GRAN_1!>[/COPY]/<CD_GRAN_1!>/<CD_GRAN_1!>-screenshot[/DFN]<DOWNLOADFILE>[VALUE]</DOWNLOADFILE>|||Скриншот программы <CD_GRAN_1!> #[COUNT]
    И его результат: images/software/a/aimp/aimp-screenshot.png|||Скриншот программы AIMP #1
    Как можно это исправить?
     
  7. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    В поиск-замена
    Код:
    re:^([\w]{1}).*$|$1
    Берет первую букву от слова
     
    Root и olivergreen нравится это.
  8. olivergreen

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

    Регистрация:
    28 янв 2013
    Сообщения:
    31
    Как ни странно, этот вариант у меня тоже не работает...
    Код:
    [DFN][CLEAR][LOWERCASE][TRANSLITE]images/software/[REPLACE(re:^([\w]{1}).*$|$1)]<CD_GRAN_1!>[/REPLACE]/<CD_GRAN_1!>/<CD_GRAN_1!>-icon[/DFN]<DOWNLOADFILE><CD_GRAN_3!></DOWNLOADFILE>|||Иконка <CD_GRAN_1!>
    Не работает если он в шаблоне вывода. Этот же код вполне себе работает для повторяющихся границ.

    Так или иначе, макрос [COPY] в моем случае работал как положено на время создания этой темы (2 года назад), проект парсинга сейчас у меня тот же. Разница только в версии программы. Ну или "версии" моего файла проекта.
     
  9. nail

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

    Регистрация:
    15 сен 2014
    Сообщения:
    60
    У меня в поиске и замене работает следующая регулярка по извлечению первой буквы(цифры) из слова:
    Код:
    re:(\w{1})(.+)|$1
    Но вышеуказанный код у kagorec тоже должен сработать.
     
    Root и kagorec нравится это.
  10. olivergreen

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

    Регистрация:
    28 янв 2013
    Сообщения:
    31
    Само по себе выражение рабочее, но не работает внутри макроса [DFN] в шаблоне вывода. Не уверен что это понятное объяснение, потому прикреплю скриншоты. В скриншотах код с [REPLACE], но все работает аналогичным образом и с макросом [COPY]. Всё проявляется только в случае использования замены внутри [DFN], когда последний в шаблоне вывода. Как-то так...
    shablon_vyvoda.png primer_raboty.png
     
  11. nail

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

    Регистрация:
    15 сен 2014
    Сообщения:
    60
    Была схожая проблема, но с макросом [FILE]. Тоже REPLACE не отрабатывал.
    Решилось путем задания переменной через макрос [VARF]:
    Код:
    [VARF][SET:path_[CC]]C:\CD\images\[GRAN14]\[REPLACE(re:(\w{1})(\w{1})(.+)|$1\$2)][GRAN6][/REPLACE]\[GRAN6]-[GRAN3].jpg[/SET][/VARF]
    [IF1][CHARCOUNT][FILE([VARF:path_[CC]]|0|1)][/CHARCOUNT]>2
    [THEN]...[/IF]
    Мне нужно было проверять существование файлов на диске.
    Этот код используется у меня в повторяющихся границах. Поэтому в VARF присутствует [CC].

    Попробуй использовать VARF в DFN. Может сработает )
     
    olivergreen нравится это.
  12. olivergreen

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

    Регистрация:
    28 янв 2013
    Сообщения:
    31
    Спасибо за содействие. Уже пробовал использовать, но не помогло...
     
  13. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    При настройке парсера отслеживайте лог при предосмотре.
    Важно соблюдать очередность выполнения макросов.

    REPLACE -> FIRST_REPLACE
    Код:
    [DFN][CLEAR][LOWERCASE][TRANSLITE]images/software/[FIRST_REPLACE(re:^([\w]{1}).*$|$1)]<CD_GRAN_1!>[/FIRST_REPLACE]/<CD_GRAN_1!>/<CD_GRAN_1!>-icon[/DFN]<DOWNLOADFILE><CD_GRAN_3!></DOWNLOADFILE>|||Иконка <CD_GRAN_1!>
     
    Root и olivergreen нравится это.
  14. olivergreen

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

    Регистрация:
    28 янв 2013
    Сообщения:
    31
    Да, я не написал об этом, но все варианты макроса REPLACE я проверил. Не сработало. Если есть интерес, можете глянуть мой файл проекта парсинга. Может вы как значительно более опытный пользователь программы сможете в нем увидеть причину проблемы.
    Но повторюсь, этот файл парсинга я создавал еще до создания этой темы, и раньше тот же макрос [COPY] работал... Хотя и много изменений в нем произошло с того времени.
     
  15. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Код:
    re:^([\wА-Яа-я\d]{1}).*$|$1
     
  16. olivergreen

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

    Регистрация:
    28 янв 2013
    Сообщения:
    31
    К моему большому сожалению не работает. Точнее само то выражение (как и предыдущее) работает, но в случае когда макрос замены (или копирования) находятся внутри макроса DFN, а он в свою очередь в шаблоне вывода, то ничего не происходит.
    В очередной раз проверил работоспособность самого выражения в редакторе выражений. Там все работает. В шаблоне вывода - нет...
    Код:
    [DFN][CLEAR][LOWERCASE][TRANSLITE]images/software/[FIRST_REPLACE(re:^([\wА-Яа-я\d]{1}).*$|$1)]тест[/FIRST_REPLACE]/<CD_GRAN_1!>/<CD_GRAN_1!>-icon[/DFN]
    Код без макроса DFN работает...
    Код:
    images/software/[FIRST_REPLACE(re:^([\wА-Яа-я\d]{1}).*$|$1)]<CD_GRAN_1!>[/FIRST_REPLACE]/<CD_GRAN_1!>/<CD_GRAN_1!>-icon
    Это результаты работы первого примера кода и второго соответственно, впрочем как и с макросом [COPY] вне [DFN]:

    images/software/7-zip/7-zip-icon.png|||Иконка 7-Zip
    images/software/7/7-Zip/7-Zip-icon
     
  17. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Параметры DFN-а лютуют, не дают макросам внутри поработать.
    Пробуйте отдельной границей зацепить название и внутри нажать "в транслит" и "понизить регистр" а в поиск замена любую регулярку что предложили выше.
    или
    Альтернативное решение (DFN без параметро но с макросами внутри) :
    Код:
    [DFN]images/software/[BEFORE_IMG_REPLACE(re:^([\wА-Яа-я\d]{1}).*$|$1)][TOTRANSLITE:regdown,clear,convertspaces]тест[/TOTRANSLITE][/BEFORE_IMG_REPLACE]/[TOTRANSLITE:regdown,clear,convertspaces]<CD_GRAN_1!>[/TOTRANSLITE]/[TOTRANSLITE:regdown,clear,convertspaces]<CD_GRAN_1!>[/TOTRANSLITE]-icon[/DFN]
     
  18. olivergreen

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

    Регистрация:
    28 янв 2013
    Сообщения:
    31
    Спасибо за Вашу помощь! Но это уже какой-то сюр... Пример, когда усилия на автоматизацию процесса занимают времени и ресурсов больше чем ручная работа... Похоже, что мне проще отказаться от этой задачи и отдельно "пройтись" регулярками по CSV и вручную раскидать папки по необходимым субдиректориям, нежели добиться адекватной работы программы, даже с такими костылями...

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

    Очень хотелось бы узнать мнение или рекомендацию от разработчика... Может он внесет ясность.
     

    Вложения:

    • 123.png
      123.png
      Размер файла:
      200,4 КБ
      Просмотров:
      0
  19. olivergreen

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

    Регистрация:
    28 янв 2013
    Сообщения:
    31
    В общем у меня явные признаки не правильной работы программы. Заметил, что если я внесу небольшое изменение в в макросе ДФН генерирующий адрес файлов, то сам адрес никак не меняется. Например код:
    Код:
    [DFN][CLEAR][LOWERCASE][TRANSLITE]images/AHAHAHA/<CD_GRAN_1!>/<CD_GRAN_1!>-icon[/DFN]<DOWNLOADFILE><CD_GRAN_3!></DOWNLOADFILE>|||Иконка <CD_GRAN_1!>
    выводит ранее указанный шаблон адреса: images/software/advanced-codecs/advanced-codecs-icon.png
    Моя ситуация ухудшается )) Теперь еще, возможно, придется переделывать проект с нуля, а потом, возможно, искать следующие причины...
     

    Вложения:

    • 123.png
      123.png
      Размер файла:
      229,4 КБ
      Просмотров:
      4
  20. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Если проект очень старый то имеетсмысл пересоздать - открываете два CD и кипастой переносите все настройки.
     

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