【问题标题】:Python regex extract vimeo id from urlPython 正则表达式从 url 中提取 vimeo id
【发布时间】:2013-02-24 03:47:55
【问题描述】:
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

【问题讨论】:

    标签: python regex url vimeo


    【解决方案1】:

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

    [^/]*$
    

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

    【讨论】:

      【解决方案2】:

      不要重新发明轮子!

      >>> 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'
      

      【讨论】:

      • OP 可能正在搜索更大的文本。
      • 变量名表明 OP 正在搜索一个 URL。
      • 如果这是出于问题目的的简化示例(在 SO 上提出问题时这样做是明智之举)怎么办?
      • 好吧..这个确实更好。不知道 urlparse.. 现在潜入其中;D.. 谢谢
      【解决方案3】:

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

      【讨论】:

        【解决方案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+]/+ 或数字中的一个完全匹配。

        【讨论】:

          猜你喜欢
          • 2012-03-22
          • 1970-01-01
          • 2013-01-06
          • 1970-01-01
          • 2023-03-17
          • 2018-02-25
          • 2011-04-08
          • 2019-07-04
          • 1970-01-01
          相关资源
          最近更新 更多