用Python正则从网址中提取Vimeo ID
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+]
只会匹配到一个字符,要么是 /
,要么是 +
,或者是一个数字。