2013-03-08 16 views
6
embed_url = 'http://www.vimeo.com/52422837' 
response = re.search(r'^(http://)?(www\.)?(vimeo\.com/)?([\/\d+])', embed_url) 
return response.group(4) 

Odpowiedź brzmi:Python regex ekstrakt vimeo id z url

5 

miałem nadzieję

52422837 

Ktoś pomysł? Jestem bardzo zły z regexes: S

Odpowiedz

4

Zastosowanie \d+ (bez nawiasów) pasujące dosłownym cyfry ukośnik +:

response = re.search(r'^(http://)?(www\.)?(vimeo\.com/)?(\d+)', embed_url) 

Wynik:

>>> re.search(r'^(http://)?(www\.)?(vimeo\.com/)?(\d+)', embed_url).group(4) 
'52422837' 

uzywasz grupę znaków ([...]), gdzie nikt nie był potrzebny. Wzór [\/\d+] odpowiada dokładnie jednemu z /, lub cyfrze.

+0

To działa .. Świetnie .. Dzięki! –

0

Czy próbowałeś dokończyć wyrażenie regularne za pomocą symbolu dolara ($)?

1

aby wszystko po ostatnim ukośniku (zakładając, że istnieje) następujące proste regex powinien to zrobić:

[^/]*$ 

(łapczywie chwyta wszystko do końca, że ​​nie jest ukośnik).

10

Nie wynajduj ponownie koła!

>>> import urlparse 
>>> urlparse.urlparse('http://www.vimeo.com/52422837') 
ParseResult(scheme='http', netloc='www.vimeo.com', path='/52422837', params='', 
query='', fragment='') 

>>> urlparse.urlparse('http://www.vimeo.com/52422837').path.lstrip("/") 
'52422837' 
+0

Jest możliwe, że OP szuka zamiast tego większej ilości tekstu. –

+0

Nazwa zmiennej sugeruje, że OP szuka adresu URL. –

+2

Co, jeśli jest to uproszczony przykład dla celów pytania (co byłoby mądre, gdy zadajesz pytanie na SO)? –