Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 28, 2016 19:41:08

alexterrel
Зарегистрирован: 2016-11-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярные выражения

Добрый вечер. Подскажите, как с помощью регулярки разлечить ссылки вида “категория” и “статья” ?
Задача стоит в том , что надо написать 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 - статья

Само РВ можете и не подсказывать/писать, было как тестовое задание на собеседование пару недель назад, но до сих пор спать нормально не могу ибо думаю как же оно решается. Просто хочу понять каким образом можно разлечить “статью” и “категорию” , за что “цепляться” при написание РВ. Спасибо.

Офлайн

#2 Ноя. 28, 2016 20:38:38

MickeyMouse
Зарегистрирован: 2016-11-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярные выражения

Странно что категории и статьи - это файлы. Причем по слешам есть равные.
Если только то что категории имеют цифровые имена, в случае наличия файлов.

Отредактировано MickeyMouse (Ноя. 28, 2016 20:39:52)

Офлайн

#3 Ноя. 29, 2016 03:41:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Регулярные выражения

alexterrel
Подскажите, как с помощью регулярки разлечить ссылки вида “категория” и “статья” ?
Что значит “различить”? Непонятно, что нужно сделать.



Офлайн

#4 Ноя. 29, 2016 09:07:50

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Регулярные выражения

А простите
как мы можем знать
http://site.com/brief/it9.html статья или нет?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Ноя. 29, 2016 12:08:01

alexterrel
Зарегистрирован: 2016-11-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярные выражения

Вот оригинальный текс задания :
"У нас есть скрипт, который обходит сайт site.ua в поисках новостей, статьи имеют ссылки вида http://site.ua/category/subcategory/article12345.html , также имеются страницы разделов вида http://site.ua/category/25.html . category, subcategory, article и числа в сcылке - произвольные, subcategory может отсутствовать. Необходимо составить 2 регулярных выражения для этого сайта, соответствующих каждому из типов страниц (одну для разделов, вторую для статей), чтобы ни одна страница не попадала одновременно под оба правила. "

Офлайн

#6 Ноя. 29, 2016 12:39:36

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Регулярные выражения

Ваша задача называется как
А…ть! Дайте две!



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#7 Ноя. 29, 2016 14:23:47

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Регулярные выражения

  
>>> 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']
>>> 



Отредактировано py.user.next (Ноя. 29, 2016 14:25:47)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version