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

प्रतिक्रिया है:अजगर regex निकालने Vimeo आईडी

5 

मैं एक विचार के लिए

52422837 

किसी उम्मीद कर रही थी? मैं regexes के साथ वास्तव में बुरा कर रहा हूँ: एस

उत्तर

4

उपयोग \d+ (कोई कोष्ठक) मैच के लिए शाब्दिक स्लेश + अंक:

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

परिणाम:

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

आप एक चरित्र समूह उपयोग कर रहे थे ([...]) जहां किसी की भी आवश्यकता नहीं थी। पैटर्न [\/\d+] बिल्कुल /, + या एक अंक से मेल खाता है।

+0

यह काम करता है .. बढ़िया .. धन्यवाद! –

0

क्या आपने अपने regexp को डॉलर ($) प्रतीक के साथ समाप्त करने का प्रयास किया है?

1

(यह मानते हुए वहाँ एक है) पिछले स्लैश के बाद सब कुछ प्राप्त करने के लिए निम्नलिखित सरल regex यह करना चाहिए:

[^/]*$ 

(लालच अंत, जो एक स्लैश नहीं है अप करने के लिए सब कुछ पकड़ लेता है।)

10

पहिया को पुन: पेश न करें!

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

यह संभव है कि ओपी टेक्स्ट के बड़े हिस्से में खोज कर रहा हो। –

+0

परिवर्तनीय नाम से पता चलता है कि ओपी एक यूआरएल खोज रहा है। –

+2

क्या होगा यदि यह प्रश्न के प्रयोजनों के लिए एक सरल उदाहरण है (जो SO पर कोई प्रश्न पूछने पर एक स्मार्ट बात होगी)? –

संबंधित मुद्दे