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

Câu trả lời là:Python regex chiết xuất vimeo id từ url

5 

Tôi đã hy vọng cho

52422837 

Bất kỳ ai một ý tưởng? Tôi thực sự xấu với regexes: S

Trả lời

4

Sử dụng \d+ (không có dấu ngoặc) để phù hợp với dấu gạch chéo + chữ số chữ:

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

Kết quả:

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

Bạn đang sử dụng một nhóm nhân vật ([...]) nơi không cần thiết. Mẫu [\/\d+] khớp chính xác một trong số /, + hoặc chữ số.

+0

Công trình này .. Tuyệt vời .. Cảm ơn! –

0

Bạn đã thử hoàn thành regexp của mình bằng ký hiệu đô la ($) chưa?

1

Để có được tất cả mọi thứ sau dấu gạch chéo cuối cùng (giả sử có một) regex đơn giản sau đây nên làm điều đó:

[^/]*$ 

(tham lam lấy tất cả mọi thứ lên đến khi kết thúc mà không phải là một dấu gạch chéo.)

10

Không phát minh lại bánh xe!

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

Có thể OP đang tìm kiếm trong nội dung văn bản lớn hơn thay thế. –

+0

Tên biến cho thấy OP đang tìm kiếm một URL. –

+2

Điều gì sẽ xảy ra nếu nó là một ví dụ đơn giản cho các mục đích của câu hỏi (đó sẽ là một điều thông minh cần làm khi đặt câu hỏi về SO)? –

Các vấn đề liên quan