7
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

4 回答 4

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'
于 2013-03-08T14:57:10.623 回答
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+]的一个完全匹配。/+

于 2013-03-08T14:53:14.007 回答
1

要在最后一个斜杠之后获取所有内容(假设有一个),应该使用以下简单的正则表达式:

[^/]*$

(贪婪地抓住所有不是斜线的东西。)

于 2013-03-08T14:56:37.583 回答
0

您是否尝试过使用美元 ($) 符号来完成您的正则表达式?

于 2013-03-08T14:54:17.413 回答