Найти - Пользователи
Полная версия: Регэксп - URL
Начало » Python для новичков » Регэксп - URL
1
AmF
Всем привет!
Такой вопрос: надо написать регулярное выражение, которое проверяет валидность введенного 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
В таком варианте работает хорошо…Но, как только убираю какой-то компонент, всё рушится и не хочет работать(вернее, выводит не то) - например, когда поддомен отсутствует или когда пути нет …

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

Спасибо всем ответившим за помощь!
o7412369815963
>>> 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']
o7412369815963
хотя не, частный вариант.
проще сплитами наверно.
AmF
Все, сам справился - получилось. Можно закрывать тему.
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