Найти - Пользователи
Полная версия: Корректность Регулярного выражения
Начало » Python для экспертов » Корректность Регулярного выражения
1 2
atomAltera
Всем привет. Не нашёл более подходящего раздела, пишу сюда.

Написал регулярку для разбора 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 )?
Мне нужно, что-бы если нет какого-то необязательного элемента, например, порта, всё остальное-бы работало как надо. Я тестил, работает. Вас прошу опытным взглядом проверить, исправить и дополнить моё творения, ибо с регулярками познакомился недавно.
Андрей Светлов
Зачем это творчество?
Yurietc
А чем например 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='')
atomAltera
А на кой он мне упал?
Андрей Светлов
Месье — велосипедист!
atomAltera
Вот, любйутесь!
\A(?:(?P<scheme>[^:/?#]+)://)?
(?:(?P<username>[^:@/?#]+)(?::(?P<password>[^/?#]+))?@)?
(?:(?P<host>[^:/?#]+))
(?::(?P<port>[^@/?#]+))?
(?:(?P<path>/[^?#]*))?
(?:\?(?P<params>[^#]*))?
(?:\#(?P<anchor>.*))?
slav0nic
вопрос “зачем” остаётся открытым …
d1ffuz0r
atomAltera
Вот, любйутесь!
любуйся http://pastebin.com/6ZC14Bs9
atomAltera
d1ffuz0r
любуйся http://pastebin.com/6ZC14Bs9
Ну я рад, мне по своему хочется…
ZAN
atomAltera
Ну я рад, мне по своему хочется…
Ну… все ополчились против этой регулярки вовсе не из вредности и не для того, чтобы ты не писал свой собственный код, просто переиспользование кода - один из основных механизмов, который используется при написании программ. К примеру, модуль urllib - один из первых стандартной библиотеки, и эти много лет использования гарантируют стабильность его работы, в то время, как эта регулярка потенциально может содержать ошибки (с намного большей вероятностью, чем urllib).
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