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

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

  1. xLime

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

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Задача: собрать ссылки на страницы товаров.
    Сайт/Кат/Категория/Подкатегория/ - здесь отображается список товаров. Является первой страницей со списком.
    Далее страницы формируются следующим образом
    Сайт/Кат/Категория/Подкатегория/~/page/2

    Убрал регулярки, выставил глубину ссылок от 4 до 7. Поставил галочку "сохранять ссылки с окончанием /". Поиск собирает ссылки в том числе и на товар.
    Запуск с этими регулярками дает результат только на страницы со списком товара.

    Прошу помощи в понимании, что именно отсеивают эти РВ.

    Еще раз изложу ход моих рассуждений:

    Точка в начале означает любой символ кроме переноса строки. Для более корректной работы мета-символ необходимо экранировать 're:\.ru', таким образом, исключаем ошибки, когда в ссылке содержится подобный текст 'refregiratoru'.
    Далее, символ слеша 're:\.ru/' ищет в тексте сам символ. В экранировании не нуждается.
    Далее, указываем группу, задаем диапазон и переодичность 're:\.ru/([^\/]+)'. Вопрос: необходимо ли в данном случае экранировать мета-символ бэкслеша '\'? Справка Ссылки недоступны для гостей дает следующий ответ:
    Тогда, группа будет означать следующее: *любой текст кроме символов '\' и '/', встречающийся 1 или более раз*

    Я так и не понял в каких случаях необходимо использовать скобки '(' ')'. В Ссылки недоступны для гостей диапазон выделен скобками следующим образом ([A-Za-z0-9-]+). Если в конце можно указать диапазон только в квадратный скобках, то почему нельзя так же использовать квадратные скобки в середине РВ, например 're:\.ru/[^\/]+/'?
     
  2. xLime

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

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    На меня внезапно нашло озарение.

    Данные РВ отсеивают ссылки глубиной от 5 до 6.
    Согласно данным:
    1 страница со списком товаров имеет глубину 4
    2 страница со списком товаров имеет глубину 7
    Все остальное можно исключить из поиска.

    Третья РВ, если я правильно понимаю, попытка отсеять "неправильные" ссылки. Но с помощью второй РВ, мы ее просто "покрываем" и она не работает, помимо того, что диапазон '[a-Z]' составлен некорректно.
     
  3. stgrin

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

    Регистрация:
    31 май 2017
    Сообщения:
    11
    Город:
    Старый Оскол
    Здравствуйте. Подскажите, пожалуйста, как решить следующую задачу. Имеется при парсинге контента следующая конструкция:
    Text1 <a href="http://site1" target="_blank" ">text2</a>, text3, ,text4 <a href="http://site2" target="_blank" ">text5</a>.
    В результате необходимо, чтобы осталась только ссылка на site2:
    Text1 text2, text3, ,text4 <a href="http://site2" target="_blank" ">text5</a>.
    Спасибо.
     
    Последнее редактирование: 23 сен 2017
  4. stgrin

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

    Регистрация:
    31 май 2017
    Сообщения:
    11
    Город:
    Старый Оскол
    Уточню задачу: имеется куча текста со ссылками на различные сайты, необходимо на выходе получить этот текст со ссылкой на один конкретный сайт, а остальные ссылки должны быть удалены.
    Text1 <a href="http://site1" target="_blank" ">text2</a>, text3, ,text4 <a href="http://site2" target="_blank" ">text5</a>. Text6 <a href="http://site3" target="_blank" ">text7</a>, text8, ,text9 <a href="http://site4" target="_blank" ">text10</a>. Text11 <a href="http://site2" target="_blank" ">text12</a>, text13, ,text14 <a href="http://site5" target="_blank" ">text15</a>.
    Результат:
    Text1 text2, text3, ,text4 <a href="http://site2" target="_blank" ">text5</a>. Text6 text7, text8, ,text9 text10. Text11 <a href="http://site2" target="_blank" ">text12</a>, text13, ,text14 text15.
     
  5. Diabet

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

    Регистрация:
    12 фев 2012
    Сообщения:
    114
    Друзья подскажите регулярочку пож
    есть 7 картинок
    нужно что бы регулярка отсчитала 5 удалила остальное
    Ссылки недоступны для гостей
     
  6. stgrin

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

    Регистрация:
    31 май 2017
    Сообщения:
    11
    Город:
    Старый Оскол
    Решил задачу, правда не с помощью регулярок, но может кому пригодится:
    <a href="http://site2/{skip}">|***
    <a {skip}>|
    ***|<a href="http://site2/">
     
    kagorec и Root нравится это.
  7. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    примерно так
    Код:
    re:^(.{5}).*|$1
     
    Diabet нравится это.
  8. Smolam_Net

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

    Регистрация:
    5 апр 2017
    Сообщения:
    55
    Подскажите, пожалуйста, как составить регулярное выражение для ссылок типа:
    Ссылки недоступны для гостей
    нужно чтобы сканер сайтов выдавал ссылки после /goods/
     
  9. xLime

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

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Так?
    Код:
    re:(.*?)/shop/goods/(.*?)
    Зачем для этого РВ? В фильтр ссылок можно добавить /goods/
    Все ссылки не содержащие /goods/ будут исключены из результата.
     
  10. Smolam_Net

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

    Регистрация:
    5 апр 2017
    Сообщения:
    55
    после /goods/ еще идет категорыя прописью и цифрами, мне нужен только товар
     
  11. Stan

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

    Регистрация:
    15 июн 2011
    Сообщения:
    499
    не подскажете, как такое взять GS1D872-42 , чтобы не задевало Vitogas слова такие?
     
  12. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Код:
    re:^.*([A-Z0-9\-\_]{4,}).*$|$1
     
    Stan нравится это.
  13. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Тема уже изъезжена много раз. Можно просто изучить фильтры Ссылки недоступны для гостей их достаточно, чтобы решить такую задачу без регулярных выражений.

    Чем отличается ссылка категории от ссылки товара? Приведите пример.
     
    Последнее редактирование: 6 окт 2017
    kagorec нравится это.
  14. v2254303

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

    Регистрация:
    12 июн 2017
    Сообщения:
    29
    Город:
    Самара
    Добрый вечер Ссылки недоступны для гостей, добавлять в очередь ссылки до Ссылки недоступны для гостей далее не добавлять )
     
  15. xLime

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

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Добрый день.

    Генератор ссылок
    Код:
    https://сайт.ру/page{num}
    От 1 до 40, шаг 1
    Фильтр ссылок
    Код:
    re:/page[1-3]{1}[0-9]{1}$
    re:/page[1-9]{1}$
    /page40
     
    Последнее редактирование: 13 окт 2017
  16. SequelONE

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

    Регистрация:
    27 апр 2017
    Сообщения:
    63
    Подскажите пожалуйста как в сканере ссылок спарсить все ссылки авторов, которые идут от корня сайта? Я нашёл вариант находить и парсить ссылки по якорю, но вот как регуляркой отлавливать все ссылки авторов? Как это настроить правильно?

    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 200 постов.**
    исходная ссылка вот такая

    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 200 постов.**
     
  17. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Достаточно в фильтр ссылок добавить условие, и отметить вверху пункт и/или
    Код:
    https://www.litres.ru/
    /#avtor-vremya
     
    Root нравится это.
  18. v2254303

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

    Регистрация:
    12 июн 2017
    Сообщения:
    29
    Город:
    Самара
    В сканере сайтов чтобы заработало )
    как в целом показывать определенный диапазон цифр 1-40 например
     
  19. Kreol

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

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    не уверен что это правильный подход. Зачем это?
     
  20. xLime

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

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Самая первая страница со Ссылки недоступны для гостей. Колонка "Образцы шаблонов". Строка "Любое число от 1 до 50 включительно". Делаем по аналогии, но насколько я понял полностью это выражение включать в CD нельзя.
     

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