先说说的我想法,我要实现的功能很简单,是通过源文件,获取土豆网视频的视屏地址和缩略图地址,提取视频地址我办到了,但在提取缩略图时正则写出来就不行了,求高手指点。首先前台,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;这一步,也就是说,匹配后没有能取得匹配值,貌似我错了,但现在改过来了,仍然不行
表达式:<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>了,所以才无法匹配。
表达式是:<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; }
@"\<span class=\""s_pic\""\>(.*?)\<\/sapn\>"这样呢?还有,注意RegexOptions.Singleline问题。 ==========================应该是\",但是要考虑到转义问题。所以应该先转义一次。
我试了一下,用你的代码的话有两个BUG:1)获取的内容只有一部分,不全;这个用一个文本框输出就可以看出来了2)正则里面</sapn>你拼错了,应该是</span>回头把我的代码弄上来,现在下班了,走人~
表达式:<spanclass=\"s_pic\">(?<url>[^<]*)</span>MatchCollectionresultsImg=regexImg.Matches(html)foreach(MatchmatIinresultsImg){url地址=matI.Groups["url"].Value;}正确的话就给分吧。另外我估计你的newRegex("<spanclass=\"s_pic\">(.*?)+</sapn>",后面的</span>你错写成</sapn>了,所以才无法匹配。
"表达式:<spanclass=\"s_pic\">(?<url>[^<]*)</span>MatchCollectionresultsImg=regexImg.Matches(html)foreach(MatchmatIinresultsImg){url地址=matI.Groups["url"].Value;}正确的话就给分吧。另外我估计你的newRegex("<spanclass=\"s_pic\">(.*?)+</sapn>",后面的</span>你错写成</sapn>了,因此才没方法匹配。"