如何提取width="3%" height="28" class="border">1.</td>中的"1",
如何提取(<a href="http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=_1&li=500&word=%CA%C4%D1%D4" target=_blank>誓言</a>)的"誓言",会用正则表达式或能解决问题的请来

解决方案 »

  1.   

    string s=......
    Regex regex=new Regex(@"^.+>(.+)<.+$");
    Match match=regex.Match(s);
    string result=match.Group[1].value;
      

  2.   

    <a href=\"http:\/\/mp3.baidu.com\/m\?tn=baidump3&ct=134217728&lm=_1&li=500&word=%CA%C4%D1%D4\" target=_blank>(.*)</a>
      

  3.   

    kissknife(侧身向南边)  你测试过了吗?
    按你的写结果什么都没有啊
      

  4.   

    deadshot123(随风缘)  你的意思我不明白
      

  5.   

    kissknife(侧身向南边)  你测试过了吗?
    按你的写结果什么都没有啊
    ====================================
    string s = "(<a href=\"http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=_1&li=500&word=%CA%C4%D1%D4\" target=_blank>誓言</a>)";
    Regex regex=new Regex(@"^.+>(.+)<.+$");
    Match match=regex.Match(s);
    string result=match.Groups[1].Value;
    MessageBox.Show(result);不可能
      

  6.   

    Regex reg2=new Regex(@"(?<=([\<]\s*a[\s]+href[^\>]+[\>]))[\s\S]+(?=([\<][\/]a[\>]))");直接取<a href>到</a>的内容
      

  7.   

    kissknife(侧身向南边) 
    恩,是能的,是我刚才没搞好的问题,那第一那个"1"怎么提取啊?
      

  8.   

    我用工具测试jingtao_zhou(小熊)的可以直接取出
      

  9.   

    一样的啊,还是用这个正则表达式啊。
    只是把s改为"width=\"3%\" height=\"28\" class=\"border\">1.</td>";只是这样取出来会是“1.”,多一个“.”号,自己再把它去了
      

  10.   

    可是 width="3%" height="28" class="border">1.</td> 是从别地方截取来的,不能往里面填加"\",或者你还有什么别方法能解决吗?请赐教啊
      

  11.   

    可是 width="3%" height="28" class="border">1.</td> 是从别地方截取来的,不能往里面填加"\",或者你还有什么别方法能解决吗?请赐教啊
    ============================================
    那你就直接用截取所得的字符串,
    不知道你要做什么...
      

  12.   

    jingtao_zhou(小熊)  恩,你的也行,可是我的问题还没完全解决,等下会结帖的
      

  13.   

    直接用截取的,你的表达式就不行了,我把程序给你,帮我看看吧,其实就是想练习截取网页上的数据的.
    private void button1_Click_1(object sender, System.EventArgs e)
    {
    string Url = "http://list.mp3.baidu.com/topso/mp3topsong.html?id=1#top2"; //得到指定Url的源码
    string strResult="";
    try
    {
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);//声明一个HttpWebRequest请求
    request.Timeout = 10000;//设置连接超时时间
    request.Headers.Set("Pragma", "no-cache");
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream streamReceive = response.GetResponseStream();
    Encoding encoding = Encoding.GetEncoding("GB2312");
    StreamReader streamReader = new StreamReader(streamReceive,encoding);
    strResult = streamReader.ReadToEnd();
    }
    catch
    {
    MessageBox.Show("出错");
    }
    int iBodyStart = strResult.IndexOf("<body", 0);
    int start = strResult.IndexOf("歌曲TOP500", iBodyStart);
    int iStart = strResult.IndexOf("<table", start);
    int iEnd = strResult.IndexOf("</table>", iStart);
    string strWeb = strResult.Substring(iStart, iEnd-iStart+8).Trim();
    string zhuanxian = strWeb.Replace("-","_");
    string zhuan = zhuanxian.Replace("<td","-");
    string[] fen = zhuan.Split('-');;
    string a1=fen[1];
    Regex regex=new Regex(@"^.+>(.+)<.+$");
    Match match=regex.Match(a1);
    string result=match.Groups[1].Value;
    richTextBox1.Text=result; }
      

  14.   

    你加了string zhuan = zhuanxian.Replace("<td","-");所以匹配不出.改为:Regex regex=new Regex(@"^.+>(.+)$");或者把
    string zhuanxian = strWeb.Replace("-","_");
    string zhuan = zhuanxian.Replace("<td","-");
    string[] fen = zhuan.Split('-');;
    string a1=fen[1];
    都删了,直接用Match match=regex.Match(strWeb);
      

  15.   

    string str="(<a href="http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=_1&li=500&word=%CA%C4%D1%D4" target=_blank>誓言</a>";
    str=str.Split('<')[1].Split('>')[0];
    不是好了?何必这么麻烦?
      

  16.   

    我看到人家用javascript+ajax就能取下来top500
    就一个网页 在javascript 你可以参考参考
      

  17.   

    str=str.Split('>')[1].Split('<')[0];
    汗打反了……
      

  18.   

    你可能没看那网页的源程序吧,里面有很多内容呢,不只是这两段,所以我才用数组先把他们分开的,如果都删掉的话,直接用Match match=regex.Match(strWeb);也出不来结果了。是不是有什么办法能把得到的fen[1]里的内容(比如width="3%" height="28" class="border">1.</td>)的引号前都加上\,然后再用你原先的那个正则法就可以实现了