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

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

  1. xLime

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

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

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

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

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

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

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

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

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

    Данные РВ отсеивают ссылки глубиной от 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
    Сообщения:
    77
    Друзья подскажите регулярочку пож
    есть 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
    Сообщения:
    2.830
    примерно так
    Код:
    re:^(.{5}).*|$1
     
    Diabet нравится это.
  8. Smolam_Net

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Регистрация:
    12 июн 2017
    Сообщения:
    3
    Город:
    Самара
  15. xLime

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

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

    Генератор ссылок
    Код:
    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
    Сообщения:
    53
    Подскажите пожалуйста как в сканере ссылок спарсить все ссылки авторов, которые идут от корня сайта? Я нашёл вариант находить и парсить ссылки по якорю, но вот как регуляркой отлавливать все ссылки авторов? Как это настроить правильно?

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

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

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

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

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

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

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

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

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

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

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