2016-09-07 3 views
-4

У меня есть URL, какPython: регулярные выражения в URL

https://www.avito.ru/chelyabinsk/avtomobili/audi_a4_2014_818414044 

И мне нужно, чтобы получить образец от этого. Я знаю, что * - это символ, который может заменить любой символ, но когда я пробую https://www.avito.ru/*/avtomobili, он не открывает этот URL. Как я могу это исправить?

+0

Кажется, вы путаете регулярные выражения с [fnmatch patterns] (http://pubs.opengroup.org/onlinepubs/7908799/xsh/fnmatch.html). Для регулярных выражений '*' - это оператор повторения, который позволяет вам повторять * предшествующую группу/символ * ноль или более раз. В зависимости от вашего варианта использования вы хотите либо '[^ /] +', либо '. +'. – dhke

+1

Uhm, no, '*' сам по себе ничего не сделает, а тем более «откройте URL». Нам не хватает примерно половины контекста, в какой ситуации вы пытаетесь применить '*' к тому, что именно. – deceze

+0

@deceze Мне нужно разобрать некоторые данные из содержимого страницы, и сначала я должен открыть url, у меня есть много URL-адресов, например 'http: // www.avito.ru/chelyabinsk/avtomobili/audi_a4_2014_818414044', но символ между' www.avito .ru и 'avtomobili' разные, и я хочу заменить эти символы, чтобы открыть все url –

ответ

0

* означает соответствие последнего символа ноль или более раз.

Например, x* ссылок 'xxxxxxx ....', и [a-z]* ссылок 'abcsiiwdqhwid ...'.

Почему бы не попробовать

https://www.avito.ru/[a-z]*/avtomobili 

или

https://www.avito.ru/.*?/avtomobili 
+0

Я пытаюсь «если» http://www.avito.ru/.*?/avtomobili 'в url: print len ​​(urllib2.urlopen (url) .read()) ', но он не возвращает URL-адрес, но некоторые как 'http: //www.avito.ru/ryazan/avtomobili? pmax = 50000 & f = 188_893b1397' –

+0

regex не используется для этого использования. Он может соответствовать шаблонам в ** известном ** тексте, но он не может магии вверх _unknowns_. –

+0

@ScottStainton, но что я должен использовать в этом случае? –

0

Из вашего примера, чтобы соответствовать

https://www.avito.ru/chelyabinsk/avtomobili/audi_a4_2014_818414044 

вы должны иметь регулярное выражение

https://www\.avito\.ru/.*?/avtomobili 

в https://www.avito.ru/XXXXXX/avtomobili: XXXXXX может быть что-нибудь

.*? средства соответствуют ничего (как можно меньше), пока вы не получите/Avtomobili

Вы также должны избежать любой DOT, как этот \.

+0

, и если мне нужно будет заменить этот URL 'http: // tyumen.drom.ru/bmw/5-series/15304602.html', могу ли я написать' if 'drom \ .ru /.*?/.*?/ \ d.html 'в url: '? –

+0

Не могли бы вы уточнить, что вы имеете в виду под "в url" – RFVenter