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+]
の 1 つに正確に一致します。/
+
最後のスラッシュ (スラッシュがあると仮定) の後のすべてを取得するには、次の単純な正規表現を使用する必要があります。
[^/]*$
(スラッシュ以外は最後まで貪欲に掴みます。)
正規表現をドル ($) 記号で仕上げてみましたか?