基本上我有一个用户创建的字符串,它可能有也可能没有youtube的iframe链接。因为这是一个客户端应用程序,它不使用html标签,我有一个特殊的表单来显示youtube视频之类的东西。但是,我需要从标记中获取src,并将其周围的所有数据替换为空。它还可能有多个链接,因此需要类似regex的内容才能在全局范围内执行此操作。
示例:用户字符串:
<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
,然后我就可以处理剩下的内容。
任何帮助都非常感谢,因为我甚至不知道如何开始这一点。谢谢大家。
发布于 2013-02-19 12:31:41
您还可以使用以下代码
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");
希望这能有所帮助。
发布于 2013-02-19 11:56:03
下面是一个正则表达式,可以帮助您开始:
(?<=src=')[^']+
注意:可能有一些边缘情况没有被考虑在内。我将把它作为操作的练习:)
发布于 2018-08-07 06:07:00
你可以使用下面的代码;
var source = Regex.Match(iframeStr, "<iframe.+?src=[\"'](.+?)[\"'].*?>", RegexOptions.IgnoreCase).Groups[1].Value;
https://stackoverflow.com/questions/14949366
复制相似问题