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
不要重新发明轮子!
>>> 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'
使用\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+]
的一个完全匹配。/
+
要在最后一个斜杠之后获取所有内容(假设有一个),应该使用以下简单的正则表达式:
[^/]*$
(贪婪地抓住所有不是斜线的东西。)
您是否尝试过使用美元 ($) 符号来完成您的正则表达式?