根据str匹配 应该会获取到第一个P标签里的内容  但是返回的总是第二个p标签中的

解决方案 »

  1.   

    你要获取class=source的p标签?
    你的正则里指定了class=sms当然会返回第一个
            string s = File.ReadAllText(Server.MapPath("TextFile.txt"));
            int i = 0;
            Regex reg = new Regex(@"(?is)<p[^>]*?mid=(['""\s]?)[^'""\s]+\1[^>]*?type=(['""\s]?)[^'""\s]+\2[^>]*?>(?<content>((?!</?p).)*)");
            foreach (Match m in reg.Matches(s))
            {
                i++;
                if (i == 2)
                    Response.Write(m.Groups["content"].Value);
            }
      

  2.   

    如果是要获取class=source的p标签里的内容的话
            string s = File.ReadAllText(Server.MapPath("TextFile.txt"));
            Regex reg = new Regex(@"(?is)<p[^>]*?class=""source""[^>]*?mid=(['""\s]?)[^'""\s]+\1[^>]*?type=(['""\s]?)[^'""\s]+\2[^>]*?>(?<content>((?!</?p).)*)");
            foreach (Match m in reg.Matches(s))
            {
                Response.Write(m.Groups["content"].Value);
            }
      

  3.   


    <p class=\042sms\042(?<html>[\s\S]+?)</p>  这个可以达到lz的需求吗?
      

  4.   

    string s = File.ReadAllText(Server.MapPath("TextFile.txt"));
    这句读出来的就是你提供的html标签,我直接扔到txt里然后读出来。
      

  5.   

    string str="<p class=\"sms\" mid=\".*\" type=\".*\"><a name=\".*\"></a><a href=\".*\" title=\".*\" target=\".*\">XXX</a>:(?<content>(\\w|\\W)*?)</p>"; class被你定死了,改掉,或者改成2楼那样的[^>]*?
      

  6.   

    不好意思 刚看错,是要取第一个p,可是取出来的是第二个,我看反了
            string s = File.ReadAllText(Server.MapPath("TextFile.txt"));
            Regex reg = new Regex(@"(?is)<p[^>]*?class=""sms""[^>]*?mid=(['""\s]?)[^'""\s]+\1[^>]*?type=(['""\s]?)[^'""\s]+\2[^>]*?>(?<content>((?!</?p).)*)");
            foreach (Match m in reg.Matches(s))
            {
                Response.Write(m.Groups["content"].Value);
            }
      

  7.   

    可以取得出来不?我测试的时候是可以取到class=sms的这个p标签的内容!
      

  8.   

     可以 循环的时候两个都可以得到
      不过上午一打开的时 发现  连网页的主要内容都匹配不出来了   真是立马无语啊
    这个是要抓取数据的网站
    http://q.t.sina.com.cn/717867
     他里面的微博是用ul标签里循环li标签显示出来的
      现在连每个li到匹配获取不到了  不知道是不是网站昨晚改版了 还是怎么的  
    希望 有时间的朋友帮帮忙 看看
      

  9.   

    怎么会事第二个呢,lz提供的html代码只有两个p,一个是class=sms的一个是class="source"的
    lz要获取第一个p,也就是class='sms'的
      

  10.   

    你是要获取那个网页的class="sms"的p标签不?
      

  11.   


    /*
    这样获取到的是class="sms"的p标签,我在这个http://q.t.sina.com.cn/717867网上对了下
    内容是一样的啊,哪里有问题呢?
    */
                HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://q.t.sina.com.cn/717867");
                HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse();
                if (webresponse.StatusCode == HttpStatusCode.OK)
                {
                    using (StreamReader dr = new StreamReader(webresponse.GetResponseStream()))
                    {
                        string result = dr.ReadToEnd();
                        Regex reg = new Regex(@"(?is)<p[^>]*?class=""sms""[^>]*?mid=(['""\s]?)[^'""\s]+\1[^>]*?type=(['""\s]?)[^'""\s]+\2[^>]*?>(?<content>((?!</?p>).)*)");
                        foreach (Match m in reg.Matches(result))
                        {
                            Response.Write(m.Groups["content"].Value);
                            Response.Write("===========================================<br/><br/><br/><br/>");
                        }
                    }
                }
      

  12.   

    Ok!string str=@"(?si)<p class=""sms"" [^:]+:(?<content>(\w|\W)*?)</p>";        
    Regex regex = new Regex(str);
    Match mc = regex.Match(html);
    if (mc.Success)
                    return mc.Groups[ "content"].Value;
      

  13.   

       是可以匹配得到 p标签中的内容啊  谁说不可以了么?   你应该看过页面有很多的li标签  每个li标签中的内容就是 新浪用户发的每条微博 
    之前的获取循序是 
    先获取页面->所有的li标签 存入list中-> 在单独从li里面 匹配获取用户名,用户头像,微博内容等
     今天发现程序获取不到页面中的li标签了 不知道什么原因. . .
                想请你帮帮忙  对于正则我连.*?都不会用. . .
      

  14.   

     而且以前都是用 (?<content>(\\w|\\W)*?)
     这个来匹配的  现在怎么样都匹配不到了  唉  头发了抓掉了n根