Итак, для некоторого lulz мы с другом играли с идеей фильтрации списка (100k +) URL-адресов для извлечения только родительского домена (например, domain.com) | орг | и т.д. "). Единственное предостережение в том, что они не все красивы и соответствуют формату.Улучшение точности/краткости регулярного выражения для непоследовательной фильтрации URL
Таким образом, некоторые из них могут быть «http://www.domain.com/urlstuff», некоторые из них имеют коды стран, такие как «www.domain.co.uk/urlstuff», в то время как другие могут быть немного более странными, более похожими на «hello.in». con.sistent.urls.com/urlstuff».
Итак, история в стороне, у меня есть регулярное выражение, которое работает:
import re
firsturl = 'www.foobar.com/fizz/buzz'
m = re.search('\w+(?=(\..{3}/|\..{2}\..{2}/))\.(.{3}|.{2}\..{2})', firsturl)
m.group(0)
, который возвращает:
foobar.com
Он смотрит первые "/" в конце URL, а затем возвращается два "." перед ним.
Итак, мой запрос, будет ли кто-нибудь из улов кучи ума иметь какую-либо мудрость, чтобы избавиться от того, как это можно сделать с помощью лучшего/короткого регулярного выражения или регулярного выражения, которое не полагается на прямой просмотр «/» внутри Струна?
Оценка за помощь в этом!
Вам действительно нужно использовать 'regex'? –
Как и многие проблемы, существует множество решений. В python легко и pythonic перебирать строки, разделяемые разделителем («.») И просто объединять то, что нам нужно.Итак, я знаю, что это можно сделать легко вне regex, но в контексте регулярного выражения мне интересно, если это можно сделать лучше, чем то, что у меня есть. – RedBarron