C#.NET用正则表达式提取土豆网视频缩略图地址

先说说的我想法,我要实现的功能很简单,是通过源文件,获取土豆网视频的视屏地址和缩略图地址,提取视频地址我办到了,但在提取缩略图时正则写出来就不行了,求高手指点。
首先前台,TextBox一个用来输入网址,Button一个触发事件,Label现实结果
再来后台代码
Button的事件
{
byte[] buf = new byte[38192];
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(textbox1.Text);
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
Stream resStream = response.GetResponseStream();
int count = resStream.Read(buf, 0, buf.Length);
//获取源文件
Regex regexImg = new Regex("<span class=\"s_pic\">(.*?)+</sapn>", RegexOptions.Compiled);
MatchCollection resultsImg = regexImg.Matches(Encoding.Default.GetString(buf, 0, count));
foreach (Match matI in resultsImg)
{
Label1.Text = matI.ToString();
}

resStream.Close();
}
代码贴完了,我说下我的想法,
土豆的缩略图是放在<sapn class="s_pic">http://……………….jpg</span>中的,因为一个页面上有很多的图片,所以我想通过<sapn class="s_pan">来正则出中间的图片内容。我写的正则就是"<span class=\"s_pic\">(.*?)+</sapn>"但不行,我怀疑是不是class的值不能被正则?我试过直接正则"s_pic"也没能成功,哎纠结了。求达人帮助啊,还有不要网上复制粘贴过来了,网上的我基本看完了,我用的是VS2008,语言是C#.NET,求教了,请试过再放上您的代码,不会请围观,不要胡说八道,谢谢
回复一楼,看明白了,但还是不行,无比纠结中~~

回复二楼,试过了还是不行,调试了下,甚至没能运行到url地址 = matI.Groups["url"].Value;
这一步,也就是说,匹配后没有能取得匹配值,貌似我错了,但现在改过来了,仍然不行
最新回答
巷尾青苔

2024-05-15 00:56:08

表达式:<span class=\"s_pic\">(?<url>[^<]*)</span>
MatchCollection resultsImg = regexImg.Matches(html)
foreach (Match matI in resultsImg)
{
url地址 = matI.Groups["url"].Value;
}

正确的话就给分吧。
另外我估计你的new Regex("<span class=\"s_pic\">(.*?)+</sapn>",后面的</span>你错写成</sapn>了,所以才无法匹配。
心碎比心死更痛

2024-05-15 04:47:24

表达式是:<span class=\"s_pic\">(.*?)</span>
取匹配结果的方法是:matI.Groups[1].Value
下面是我的测试程序
string s = "<span class=\"s_pic\">http://……………….jpg</span>";
Regex regexImg = new Regex("<span class=\"s_pic\">(.*?)</span>");
MatchCollection resultsImg = regexImg.Matches(s);
string t = "";
foreach (Match matI in resultsImg)
{
t += matI.Groups[1].Value;
}
一页

2024-05-15 04:24:16

@"\<span class=\""s_pic\""\>(.*?)\<\/sapn\>"

这样呢?还有,注意RegexOptions.Singleline问题。

==========================

应该是\",但是要考虑到转义问题。所以应该先转义一次。
青春命葬校园

2024-05-15 01:19:58

我试了一下,用你的代码的话有两个BUG:1)获取的内容只有一部分,不全;这个用一个文本框输出就可以看出来了2)正则里面</sapn>你拼错了,应该是</span>回头把我的代码弄上来,现在下班了,走人~
温柔女人霸气范er

2024-05-15 03:11:13

表达式:<span
class=\"s_pic\">(?<url>[^<]*)</span>
MatchCollection
resultsImg
=
regexImg.Matches(html)
foreach
(Match
matI
in
resultsImg)
{
url地址
=
matI.Groups["url"].Value;
}
正确的话就给分吧。
另外我估计你的new
Regex("<span
class=\"s_pic\">(.*?)+</sapn>",后面的</span>你错写成</sapn>了,所以才无法匹配。
如啼眼

2024-05-15 04:20:11

"表达式:<span
class=\"s_pic\">(?<url>[^<]*)</span>
MatchCollection
resultsImg
=
regexImg.Matches(html)
foreach
(Match
matI
in
resultsImg)
{
url地址
=
matI.Groups["url"].Value;
}
正确的话就给分吧。
另外我估计你的new
Regex("<span
class=\"s_pic\">(.*?)+</sapn>",后面的</span>你错写成</sapn>了,因此才没方法匹配。"