我要提取网页<a href></a>中的值,请问
1:如果包含<a href></a>怎么写
2:如果不包含怎么写?

解决方案 »

  1.   

    <a\s+href[^>]+>([^<]+)</a>
      

  2.   

    mobydick(敌伯威|我排著队拿著爱的号码牌):
      多谢,你帮我解决了第一个问题,那第2个问题是提取<a href></a>中包含的字符怎么写?
      

  3.   

    第二个试试这个
    (?<=[\<]a[\\s]+href[^>]+)[\\s][\\S]+(?=[\<]a[\>])
      

  4.   

    小熊:不可以我现在是这么做的。。用mobydick的提取出了<a href></a>完整的,放到了一个列表里。然后将列表读到datatable里,然后再用[\u4e00-\u9fa5]提取中文,结果显示在datagrid里全是system.什么什么
      

  5.   

    Regex reg2=new Regex(@"(?<=([\<]\s*a[\s]+href[^\>]+[\>]))[\s\S]+(?=([\<][\/]a[\>]))");这个应该可以了
    我测试了,直接取<a href>到</a>的内容
      

  6.   

    小熊:这个可以取第一个,所以我是这么做的
    1:用(?<=[\<]a[\\s]+href[^>]+)[\\s][\\S]+(?=[\<]a[\>])取到了所以包含<a href></a>的数据
    2:将这些数据放入了列表
    3:用foreach取出数据并再次用你的正则表达式验证。。
    foreach(string str in alHyperLinks)
    {
    dRow=dt.NewRow();
    string strregex1=@"(?<=([\<]\s*a[\s]+href[^\>]+[\>]))[\s\S]+(?=([\<][\/]a[\>]))";
    System.Text.RegularExpressions.Regex r1=new Regex(strregex1,System.Text.RegularExpressions.RegexOptions.None);
    MatchCollection m1=r1.Matches(str);
    dRow["URL"]=m1.ToString();
    dt.Rows.Add(dRow);
    }
    但是得出的结果全是System.Text.RegularExpressions.MatchCollection,请问怎么办。
      

  7.   

    MatchCollection m1=r1.Matches(str);for(int i=0;i<m1.Count;i++)
    {
      MessageBox.Show(m1[i].Value);
    }
    m1[i].Value你想要的值
      

  8.   

    string myRegexStr = ".....";//用上面的
    string yourStr = "";//MacthCollection mc = Regx.Matches(yourStr, myRegexStr);
    foreach(Match m in mc)
    {
          m.Groups[0].Value;//问题1.
          m.Groups[1].Value;//问题2.
    }
      

  9.   

    "<a\s+href[^>]+>([^<]+)</a>"; 
    能搞定
      

  10.   

    string s=....
    Regex reg = new Regex("(?<=(href[\\s]*=[\\s]*\"))[\\s\\S]*?(?=(\"))",RegexOptions.IgnoreCase);
    Console.WriteLine(reg.Match(s).Value);