2013-02-19 113 views
0

基本上我有一个用户创建的字符串,它可能有或没有用于youtube的iframe链接。由于这是一个客户端应用程序,它不使用html标签,并且我有一个特殊的窗体显示youtube videos 。但是,我需要从标签中获取src,并用空白替换它周围的所有数据。 它也可以有多个链接所以这个需要是这样的正则表达式做全球吧..C#从iframe html标签获取src?

例子: 用户字符串:

<iframe width='300px' height='225px' src='http://www.youtube-nocookie.com/embed/4FhG-UYRHJ0' frameborder='0' allowfullscreen></iframe> 

我想做什么输出: 我希望用户只看到:http://www.youtube-nocookie.com/embed/4FhG-UYRHJ0然后我可以处理其余的。

任何帮助非常感谢,因为我不知道如何开始这一点。谢谢你们。

+1

随着[HtmlAgilityPack(http://htmlagilitypack.codeplex.com/),你可以做到这一点 – tttony 2013-02-19 03:36:58

+0

你应该尝试自己做,这是一个非常简单的正则表达式。此网站旨在帮助解决问题,而不是为您做好工作。 – ilomambo 2013-02-19 03:46:52

+0

我目前正在学习7种语言,每种语言都与其他语言完全不同。正则表达式在这一点上会让我困惑。另外为什么尝试重新发明轮子?如果有人已经做到了,他们的尝试很可能会比我更好。 – user1763295 2013-02-19 13:25:15

回答

3

,你也可以使用这个

string iframe = "<iframe width='300px' height='225px' src='http://www.youtube-nocookie.com/embed/4FhG-UYRHJ0' frameborder='0' allowfullscreen></iframe>"; 

      Match matchdec = Regex.Match(iframe, @"\ssrc='\b(\S*)\b", RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase); 
      if (matchdec.Success) 
      { 
       if (matchdec.Groups.Count > 1) 
       { 
        string retval = matchdec.Groups[1].Value; 
       } 
      } 

所有符合您可以使用: -

string iframe = "<iframe width='300px' height='225px' src='http://www.youtube-nocookie.com/embed/4FhG-UYRHJ0' frameborder='0' allowfullscreen></iframe>"; 
       iframe += "<iframe width='300px' height='225px' src='http://www.youtube-nocookie.com/embed/newid' frameborder='0' allowfullscreen></iframe>"; 

       Match matchdec = Regex.Match(iframe, @"\ssrc='\b(\S*)\b", RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase); 
       while (matchdec.Success) 
       { 
        if (matchdec.Groups.Count > 1) 
        { 
         string retval = matchdec.Groups[1].Value; 
        } 
        matchdec = matchdec.NextMatch(); 
       } 

来代替添加此行

iframe = Regex.Replace(iframe, retval, "yournewurl"); 

希望这会有所帮助。

+0

这是说,当我把正则表达式放入时,无法识别的转义序列? – user1763295 2013-02-19 13:12:23

+0

忽略以上,我忘了@。非常感谢这个正则表达式完美工作。 – user1763295 2013-02-19 13:32:03

1

这里是一个正则表达式让你开始:

(?<=src=')[^']+ 

注:可能是不占优势的一些情况。我会离开,作为一个练习OP :)

+0

这似乎没有选择实际的src,但它正在拾取src的每个实例。 – user1763295 2013-02-19 13:24:16