Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 10, 2010 17:31:53

AmF
От:
Зарегистрирован: 2010-09-16
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Регэксп - URL

Всем привет!
Такой вопрос: надо написать регулярное выражение, которое проверяет валидность введенного url и и выводит его поэлементно, например:

import re
p = re.compile('^(https?:\/\/)?([\w]+)\.([\w]+)+\.([a-z]{2,6}\.?)\/([\w-]+)*/([\w-]+)\.(gif|png|jpg)$')
p = re.finditer('^(https?:\/\/)?([\w]+)\.([\w]+)+\.([a-z]{2,6}\.?)\/([\w-]+)*/([\w-]+)\.(gif|png|jpg)$', 'http://imgs.xkcd.com/comics/python.png')
for match in p :
print "Protokol: ", match.group(1) #http
print "Poddomen: ", match.group(2) #imgs
print "Domen: ", match.group(3) #xkcd
print "Domennaya zona: ", match.group(4) #com
print "Put na saite: ", match.group(5) #comics
print "Name of file: ", match.group(6) #python
print "Rasshirenie fayla: ", match.group(7) #png
В таком варианте работает хорошо…Но, как только убираю какой-то компонент, всё рушится и не хочет работать(вернее, выводит не то) - например, когда поддомен отсутствует или когда пути нет …

Подскажите, пжлст, что у меня за ошибка …

Спасибо всем ответившим за помощь!



Офлайн

#2 Окт. 10, 2010 18:07:01

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Регэксп - URL

>>> import re
>>> s = 'http://python.su/forum/viewtopic.php?id=8773'
>>> m = re.match('^(\w*)://(.*)/(.*)\?(.*)$',s)
>>> m.groups()
('http', 'python.su/forum', 'viewtopic.php', 'id=8773')
>>> m.groups()[1].split('/')
['python.su', 'forum']

Офлайн

#3 Окт. 10, 2010 18:09:08

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Регэксп - URL

хотя не, частный вариант.
проще сплитами наверно.

Офлайн

#4 Окт. 10, 2010 21:34:03

AmF
От:
Зарегистрирован: 2010-09-16
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Регэксп - URL

Все, сам справился - получилось. Можно закрывать тему.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version