Найти - Пользователи
Полная версия: Регулярные выражения
Начало » Центр помощи » Регулярные выражения
1
alexterrel
Добрый вечер. Подскажите, как с помощью регулярки разлечить ссылки вида “категория” и “статья” ?
Задача стоит в том , что надо написать 2 РВ для сайта , где есть ссылки вида “категория” и “статья” и что бы они не попадали под одно правило одновременно.
Например :
http://site.com/news/ - категория
http://site.com/digests/2.html - категория
http://site.com/sports/hockey/10.html - категория
http://site.com/sports/hockey/nhl-novyi-standart-shaib810.html - статья
http://site.com/politics/yanukovich-became-a-citizen-of-China837.html - статья
http://site.com/brief/it9.html - статья

Само РВ можете и не подсказывать/писать, было как тестовое задание на собеседование пару недель назад, но до сих пор спать нормально не могу ибо думаю как же оно решается. Просто хочу понять каким образом можно разлечить “статью” и “категорию” , за что “цепляться” при написание РВ. Спасибо.
MickeyMouse
Странно что категории и статьи - это файлы. Причем по слешам есть равные.
Если только то что категории имеют цифровые имена, в случае наличия файлов.
py.user.next
alexterrel
Подскажите, как с помощью регулярки разлечить ссылки вида “категория” и “статья” ?
Что значит “различить”? Непонятно, что нужно сделать.
ZerG
А простите
как мы можем знать
http://site.com/brief/it9.html статья или нет?
alexterrel
Вот оригинальный текс задания :
"У нас есть скрипт, который обходит сайт site.ua в поисках новостей, статьи имеют ссылки вида http://site.ua/category/subcategory/article12345.html , также имеются страницы разделов вида http://site.ua/category/25.html . category, subcategory, article и числа в сcылке - произвольные, subcategory может отсутствовать. Необходимо составить 2 регулярных выражения для этого сайта, соответствующих каждому из типов страниц (одну для разделов, вторую для статей), чтобы ни одна страница не попадала одновременно под оба правила. "
ZerG
Ваша задача называется как
А…ть! Дайте две!
py.user.next
  
>>> import re
>>> 
>>> text = """
... 
... http://site.com/news/
... http://site.com/digests/2.html
... http://site.com/sports/hockey/10.html
... http://site.com/sports/hockey/nhl-novyi-standart-shaib810.html
... http://site.com/politics/yanukovich-became-a-citizen-of-China837.html
... http://site.com/brief/it9.html
... 
... http://site.com/news/
... http://site.com/digests/2.html
... http://site.com/sports/hockey/10.html
... http://site.com/sports/hockey/nhl-novyi-standart-shaib810.html
... http://site.com/politics/yanukovich-became-a-citizen-of-China837.html
... http://site.com/brief/it9.html
... 
... """
>>> 
>>> pat_article = r'^http://site\.com/.*/[^\d/]+\d+\.html$'
>>> pat_category = r'^http://site\.com/.*/(?:\d+\.html)?$'
>>> 
>>> articles = re.findall(pat_article, text, re.MULTILINE)
>>> categories = re.findall(pat_category, text, re.MULTILINE)
>>> 
>>> articles
['http://site.com/sports/hockey/nhl-novyi-standart-shaib810.html', 'http://site.com/politics/yanukovich-became-a-citizen-of-China837.html', 'http://site.com/brief/it9.html', 'http://site.com/sports/hockey/nhl-novyi-standart-shaib810.html', 'http://site.com/politics/yanukovich-became-a-citizen-of-China837.html', 'http://site.com/brief/it9.html']
>>> 
>>> categories
['http://site.com/news/', 'http://site.com/digests/2.html', 'http://site.com/sports/hockey/10.html', 'http://site.com/news/', 'http://site.com/digests/2.html', 'http://site.com/sports/hockey/10.html']
>>> 
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB