Форум сайта python.su
Всем привет!
Такой вопрос: надо написать регулярное выражение, которое проверяет валидность введенного 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
Офлайн
>>> 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']
Офлайн
хотя не, частный вариант.
проще сплитами наверно.
Офлайн
Все, сам справился - получилось. Можно закрывать тему.
Офлайн