Regexp - шпаргалка по регулярным выражениям

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

  1. recrut

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

    Регистрация:
    16 мар 2017
    Сообщения:
    45
    Решил вопрос через:
    [SEGMENT]{start}price-cell-text">{/start}{end} {/end} |
     
  2. zava75

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

    Регистрация:
    23 янв 2020
    Сообщения:
    30
    Город:
    Ромны
    Как реализовать - Поиск замена вертикальной черты | на перенос br
    пример
    слово1 | слово2 | слово3
    вывод
    слово1
    слово2
    слово3
    Спасибо за ответы
     
  3. inotoxic

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

    Регистрация:
    13 сен 2015
    Сообщения:
    868
    [​IMG]

    Код:
    {sep}|{br2}
     |
     
    zava75 нравится это.
  4. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    В фильтре ссылок пробуйте
    Код:
    re:com/category/[^\/]+/[^\/\-]+/
     
  5. dimochkaorg

    dimochkaorg Active Member Пользователи

    Регистрация:
    25 мар 2017
    Сообщения:
    181
    А вот как сделать то же самое, но чтобы это с конца строки удалялось, до первой русской буквы? Придумало вот так re:^[^а-яА-Я]+| но это с начала, а как от конца брать никак найти не могу/ Сам спросил и сам ответил, если кому пригодится у меня сработало вот так
    re:[^а-яА-Я]+$|

     
    Последнее редактирование: 20 май 2022
    kagorec нравится это.
  6. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Код:
    re:^([\w]{2}).*$|$1  -  только буквы и цифры
    re:^([а-яА-Яa-zA-Z]{2}).*$|$1  -  только буквы
     
    dimochkaorg нравится это.
  7. strateg2010

    strateg2010 Active Member Пользователи

    Регистрация:
    12 фев 2018
    Сообщения:
    181
    Город:
    порт
    Добрый, вечер, подскажите как можно удалить все до первой цифры?
    пример входных данных:
    Парфюмерная вода 1,5мл
    Парфюмерная вода 7.5*5мл
    Одеколон 50мл тестер
    Одеколон 125мл уценка
    Что нужно получить:
    1,5мл
    7.5*5мл
    50мл тестер
    125мл уценка

    есть конструкция ([0-9,]{1,}мл[ ]*.{0,30}) она как раз таки ищет это все, но поиск замена их просто удаляет
     
  8. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Код:
    re:^.* ([\d]+)(.*?)$|$1$2
     
    strateg2010 нравится это.
  9. strateg2010

    strateg2010 Active Member Пользователи

    Регистрация:
    12 фев 2018
    Сообщения:
    181
    Город:
    порт
    Спасибо то что нужно!
     
  10. dimochkaorg

    dimochkaorg Active Member Пользователи

    Регистрация:
    25 мар 2017
    Сообщения:
    181
    Созрел еще вопрос, есть вот такой урл Ссылки недоступны для гостей - как мне взять только последние цифры 237842364982 (часть урла d30/ip) всегда разная здесь приведено чисто для примера)
     
  11. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Стандартным решением в несколько строк типо {skip}/|
    или
    Регулярным выражением
    Код:
    re:^.*/([\d]+)|$1
     
    dimochkaorg нравится это.
  12. dimochkaorg

    dimochkaorg Active Member Пользователи

    Регистрация:
    25 мар 2017
    Сообщения:
    181
    Огромное спасибо. Скажите не могли бы вы мне объяснить конструкцию
    $1 на который идет замена. $ - как я понимаю конец строки, а 1 что это?

     
  13. dimochkaorg

    dimochkaorg Active Member Пользователи

    Регистрация:
    25 мар 2017
    Сообщения:
    181
    А по поводу стандартного решения, вот что меня вчера свело с ума. Я полчаса бездумно нажал и только потом полез на форум с вопросом
    Ссылки недоступны для гостей - настройки
    а вот результат
    Ссылки недоступны для гостей
    почему-то отработка идет с начала CSVPRO 2.093
     
  14. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Стандартным решением в несколько строк типо {skip}/|
     
    dimochkaorg нравится это.
  15. dimochkaorg

    dimochkaorg Active Member Пользователи

    Регистрация:
    25 мар 2017
    Сообщения:
    181
    Спасибо огромное... Конструкция
    re:^.*/([\d]+)|$1 очень помогла, а можно ли трансформировать в удаление любых символов с конца строки до к примеру первого |
     
    kagorec нравится это.
  16. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Разделить статью корректно на несколько частей.
    Число символов от 100 до 200 - измените на свои например 100,1000 :)
    Применить в Ctrl+4 в поле поиск-замена для нужной границы
    Код:
    re:^(.{100,200})</p>|$1</p><p class="part2"></p>
    re:<p class="part2"></p>(.{100,200})</p>|$1</p><p class="part3"></p>
    re:<p class="part3"></p>(.{100,200})</p>|$1</p><p class="part4"></p>
    re:<p class="part4"></p>(.{100,200})</p>|$1</p><p class="part5"></p>
    re:<p class="part5"></p>(.{100,200})</p>|$1</p><p class="part6"></p>
    и т.д. 
    Указать эту границу для повт.границы как область кода и дальше обрабатывать как угодно в зависимости от задачи (макросом SAVETOFILE, PHP_SCRIPT, GETMORECONTENT)

    п.с. поиск-замена будет работать при условии если в статье присутствуют теги p.
     
    sinoda нравится это.
  17. snb1987

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

    Регистрация:
    15 мар 2015
    Сообщения:
    27
    Город:
    Санкт-Петербург
    Доброго времени суток!

    Подскажите пожалуйста, сломал мозг.
    Нужно из названий товаров вытаскивать числа (артикулы).
    Каждое название, отдельно в ячейки.
    Нужны числа только 4-7 знаков, если в названии два числа, брать большее по знакам.
    Если число более 7 знаков или есть символ, не брать совсем (сейчас обрезается).
    Пример (что забирать):
    Конструктор 1600 деталей 567998 (567998)
    Конструктор lego машинка 567809 белая 1400 д (567809)
    Конструктор машинка 567809 белая (567809)
    Конструктор машинка 5678 черная (5678)

    Делаю сейчас так:

    re:([\d]{4,7})|<@@>$1</##>
    {skip}<@@>|
    {skip}<@@>
    </##>{skip}|
    </##>{skip}|

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

    xLime Well-Known Member Супер Модератор Модератор

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Здравствуйте.

    У меня вот такая жуть получилась:

    Код:
    {get}|__{get}__
    re:\D(\d{7,7})\D|%%%$1%%%
    %%%{get}%%%|{get}
    {break_if_not_nil}
    {reset_if_nil}
    
    {get}|__{get}__
    re:\D(\d{6,6})\D|$$$$1$$$
    $$${get}$$$|{get}
    {break_if_not_nil}
    {reset_if_nil}
    
    {get}|__{get}__
    re:\D(\d{5,5})\D|###$1###
    ###{get}###|{get}
    {break_if_not_nil}
    {reset_if_nil}
    
    {get}|__{get}__
    re:\D(\d{4,4})\D|@@@$1@@@
    @@@{get}@@@|{get}
    {break_if_not_nil}
    {reset_if_nil}
    Используйте на свой страх и риск :)

    upload_2022-9-15_21-9-30.png
     
    dimochkaorg и snb1987 нравится это.
  19. snb1987

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

    Регистрация:
    15 мар 2015
    Сообщения:
    27
    Город:
    Санкт-Петербург
    Большое спасибо, сейчас попробую, хорошего вечера Вам!
     
  20. dimochkaorg

    dimochkaorg Active Member Пользователи

    Регистрация:
    25 мар 2017
    Сообщения:
    181
    Господа прошу хелпа! Есть вот такое Каталог|Сантехника и водоснабжение|Сантехника|Ванны|1Марка - надо убрать все после четвертого вхождения | С конца убирать не могу потому, что есть данные, где последнего вхождения бренда - нет, типа Каталог|Сантехника и водоснабжение|Сантехника|Ванны
     

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