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

Die Antwort ist:Python Regex Extrakt vimeo id von url

5 

ich hatte gehofft,

52422837 

jemand eine Idee? Ich bin wirklich schlecht mit regulären Ausdrücken: S

Antwort

4

Verwendung \d+ (ohne Klammern) die wörtliche slash + Ziffern entsprechen:

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

Ergebnis:

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

Sie haben eine Zeichengruppe mit ([...]), wo keiner benötigt wurde. Das Muster [\/\d+] entspricht genau einem von /, + oder einer Ziffer.

+0

Das funktioniert .. Groß .. Danke! –

0

Haben Sie versucht, Ihre Regexp mit einem Dollar ($) Symbol zu beenden?

1

Um alles nach dem letzten Schrägstrich zu bekommen (vorausgesetzt, man ist) die folgende einfache regex es tun soll:

[^/]*$ 

(Gierig packt alles bis zum Ende, das kein Slash ist.)

10

Erfinden Sie das Rad nicht neu!

>>> 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

Es ist möglich, dass das OP stattdessen in einem größeren Textabschnitt sucht. –

+0

Der Variablenname deutet darauf hin, dass OP eine URL sucht. –

+2

Was ist, wenn es ein vereinfachtes Beispiel für die Zwecke der Frage ist (was wäre eine kluge Sache, wenn man eine Frage zu SO stellt)? –