Python正则表达式从url中提取vimeo id

Jer*_*its 6 python regex url vimeo

embed_url = 'http://www.vimeo.com/52422837'
response = re.search(r'^(http://)?(www\.)?(vimeo\.com/)?([\/\d+])', embed_url)
return response.group(4)
Run Code Online (Sandbox Code Playgroud)

回应是:

5
Run Code Online (Sandbox Code Playgroud)

我希望

52422837
Run Code Online (Sandbox Code Playgroud)

有人有想法吗?我对正则表达式很不满意:S

Col*_*nic 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'
Run Code Online (Sandbox Code Playgroud)

  • 如果它是一个简化的例子用于问题的目的(在SO上提问时这是一件明智的事情)? (2认同)

Mar*_*ers 5

使用\d+(无括号)匹配文字斜杠 + 数字:

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

结果:

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

您正在使用[...]不需要的字符组 ( )。模式[\/\d+]匹配的只有一个/+或一个数字。