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+]の 1 つに正確に一致します。/+

于 2013-03-08T14:53:14.007 に答える
1

最後のスラッシュ (スラッシュがあると仮定) の後のすべてを取得するには、次の単純な正規表現を使用する必要があります。

[^/]*$

(スラッシュ以外は最後まで貪欲に掴みます。)

于 2013-03-08T14:56:37.583 に答える
0

正規表現をドル ($) 記号で仕上げてみましたか?

于 2013-03-08T14:54:17.413 に答える