Добрый вечер. Подскажите, как с помощью регулярки разлечить ссылки вида “категория” и “статья” ?
Задача стоит в том , что надо написать 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 - статья
Пробовал делать через .html ( для статей ) и цифры+/ для категорий , но все равно не то что-то.
Можете не писать РВ , просто подскажите как можно разлечить либо за что цепляться при решение данной задачи.
Делается на питоне.
Спасибо.
Taras
(Taras)
29.Ноябрь.2016 12:50:21
#2
загнать в URL обьект и парсить части етого обьекта , можно регулярки писать … но долго будет что б все кейси покрить
McStar
(Максим Таран)
29.Ноябрь.2016 12:58:03
#3
А в чёс разница в урлах? То, что категория содержит только цифры?
ex3me0
(SS)
10.Декабрь.2016 21:00:21
#4
На приведенных примерах - работать будет любой из вариантов:
import re
urls = """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"""
# 1
for url in urls.splitlines():
last_chunk_wo_html = url.rsplit('/', 1)[1].rsplit('.', 1)[0]
if re.search(r'\d*[a-zA-Z][a-zA-Z\d]*', last_chunk_wo_html):
print url, 'article'
else:
print url, 'category'
# 2
for url in urls.splitlines():
last_chunk_wo_html = url.rsplit('/', 1)[1].rsplit('.', 1)[0]
if not last_chunk_wo_html or last_chunk_wo_html.isdigit():
print url, 'category'
else:
print url, 'article'
1 лайк