基本上我有一个用户创建的字符串,它可能有也可能没有youtube的iframe链接。由于这是一个客户端应用程序,它不使用html标签,我有一个特殊的表单,显示像youtube之类的东西视频。但是,我需要从标记中获取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
然后我可以处理其余的事情。
任何帮助都非常感谢,因为我不知道如何开始这个。谢谢你们。
答案 0 :(得分:4)
您也可以使用此
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");
希望这有帮助。
答案 1 :(得分:1)
这是一个让你入门的正则表达式:
(?<=src=')[^']+
注意:可能是一些未考虑的边缘情况。我将此作为OP的练习:)
答案 2 :(得分:0)
您可以使用以下代码;
var source = Regex.Match(iframeStr, "<iframe.+?src=[\"'](.+?)[\"'].*?>", RegexOptions.IgnoreCase).Groups[1].Value;