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
答案 0 :(得分: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'
答案 1 :(得分:4)
使用\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+]
只匹配/
,+
或数字之一。
答案 2 :(得分:1)
要获取最后一个斜杠之后的所有内容(假设有一个),以下简单的正则表达式应该这样做:
[^/]*$
(贪婪地把所有东西都抓到最后但不是斜线。)
答案 3 :(得分:0)
您是否尝试使用美元($)符号完成正则表达式?