Форум сайта python.su
Всем привет. Не нашёл более подходящего раздела, пишу сюда.
Написал регулярку для разбора URL, не знаю, кто-то уже такое делал, но я не нашёл.
Задача - извлекать из URL всё что можно: схему, имя, пароль, хост, порт и т.д.
\A
(?: (?P<scheme> \w+) :// )?
(?: (?P<user> [\w_]+) [:@] )?
(?: (?P<password> (?<=:) [\w%_]+) @ )?
(?: (?P<host> [\w._-]+?) (?:[/:?#]|\Z) )?
(?: (?P<port> (?<=:) \d+) (?:[/:?#]|\Z) )?
(?: (?P<path> (?<=/) [^?#]*) (?:[?#]|\Z) )?
(?: (?P<parameters> (?<=\?) [^#]+) (?:[#]|\Z) )?
(?: (?P<anchor> (?<=\#) .+) \Z )?
Офлайн
Зачем это творчество?
Офлайн
А чем например urllib2.urlparse неугодил ?
>>> urllib2.urlparse.urlparse('http://python.su/forum/viewtopic.php?id=12367')
ParseResult(scheme='http', netloc='python.su', path='/forum/viewtopic.php', params='', query='id=12367', fragment='')
Отредактировано (Авг. 18, 2011 12:37:00)
Офлайн
А на кой он мне упал?
Офлайн
Месье — велосипедист!
Офлайн
Вот, любйутесь!
\A(?:(?P<scheme>[^:/?#]+)://)?
(?:(?P<username>[^:@/?#]+)(?::(?P<password>[^/?#]+))?@)?
(?:(?P<host>[^:/?#]+))
(?::(?P<port>[^@/?#]+))?
(?:(?P<path>/[^?#]*))?
(?:\?(?P<params>[^#]*))?
(?:\#(?P<anchor>.*))?
Офлайн
вопрос “зачем” остаётся открытым …
Офлайн
atomAlteraлюбуйся http://pastebin.com/6ZC14Bs9
Вот, любйутесь!
Офлайн
d1ffuz0rНу я рад, мне по своему хочется…
любуйся http://pastebin.com/6ZC14Bs9
Отредактировано (Авг. 19, 2011 09:24:20)
Офлайн
atomAlteraНу… все ополчились против этой регулярки вовсе не из вредности и не для того, чтобы ты не писал свой собственный код, просто переиспользование кода - один из основных механизмов, который используется при написании программ. К примеру, модуль urllib - один из первых стандартной библиотеки, и эти много лет использования гарантируют стабильность его работы, в то время, как эта регулярка потенциально может содержать ошибки (с намного большей вероятностью, чем urllib).
Ну я рад, мне по своему хочется…
Офлайн