用Python正则从网址中提取Vimeo ID

7 投票
4 回答
4140 浏览
提问于 2025-04-17 18:25
embed_url = 'http://www.vimeo.com/52422837'
response = re.search(r'^(http://)?(www\.)?(vimeo\.com/)?([\/\d+])', embed_url)
return response.group(4)

回复是:

5

我本来希望能得到

52422837

有人知道吗?我对正则表达式真的很糟糕 :S

4 个回答

1

如果你想获取最后一个斜杠后面的所有内容(假设有斜杠的话),可以使用下面这个简单的正则表达式:

[^/]*$

(这个表达式会贪婪地抓取所有不是斜杠的内容,直到最后。)

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

使用 \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+] 只会匹配到一个字符,要么是 /,要么是 +,或者是一个数字。

撰写回答