【问题标题】:Regex to parse youtube link正则表达式解析 youtube 链接
【发布时间】:2014-07-12 05:52:18
【问题描述】:

从 youtube 获取 URL 时,这些链接如下:

我需要在 Vb.net 中使用正则表达式将其解析为如下

这意味着删除 watch? 并在 v 之后将 = 替换为 / .

对不起,我是正则表达式的新手...

【问题讨论】:

  • 为什么要使用正则表达式?这个用例有点过分了!

标签: regex vb.net url youtube


【解决方案1】:

你可以使用下面的正则表达式,

^(http:\/\/(?:www\.)?(?:youtube)\.com\/)[^?]+\?(v)=(.*)$

在替换部分,放下面

$1$2/$3

DEMO

您可以使用lookbehind 来匹配.com/ 之后的字符直到第一个= 符号。

(?<=\.com\/).*?=

并在替换部分,将匹配的字符替换为,

v/

DEMO

【讨论】:

    【解决方案2】:

    正则表达式对此太过分了,你不需要使用一个。一个简单的字符串替换就足够了。在 C# 中看起来像这样:

    string url1 = "http://www.youtube.com/watch?v=oSyL8WMLSB8";
    string url2 = url1.Replace("/watch?v=", "/v/");
    // url2 => "http://www.youtube.com/v/oSyL8WMLSB8"
    

    在 vb.net 中看起来像这样:

    Dim url1 As String = "http://www.youtube.com/watch?v=oSyL8WMLSB8"
    Dim url2 As String = url1.Replace("/watch?v=", "/v/")
    ' url2 => "http://www.youtube.com/v/oSyL8WMLSB8"
    

    【讨论】:

      【解决方案3】:

      替换

      /watch\?v=/
      

      "v/"
      

      例子:


      (来源:gyazo.com

      View a live regex demo!


      编辑:

      这意味着删除手表?并在 v 之后用 / 替换 =。

      在这种情况下,请参阅以下正则表达式替换:

      /watch?(v)=/
      

      替换为:

      "$1/"
      

      例子:


      (来源:gyazo.com

      View a live regex demo!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-05
        • 2011-04-12
        • 2018-09-10
        • 1970-01-01
        • 2011-09-02
        • 1970-01-01
        相关资源
        最近更新 更多