本帖最后由 lijianguo3961 于 2012-08-03 11:08:17 编辑

解决方案 »

  1.   


    void Main()
    {
    string _str=@"<a style='color: #dffeaa' title=路虎1 href='http://www.baidu.com' target=_blank>路虎1</a>
    <a style='color: #000' title=路虎2 href='http://www.baidu.com' target=_blank>路虎2</a>
    <a style='color: #ccc' title=路虎3 href='http://www.baidu.com' target=_blank>路虎3</a>";
    Regex reg = new Regex(@"(?is)<a[^>]*?style=(['""\s]?)color:(?<color>[^'""]*?)\1[^>]*?href=(['""\s]?)(?<href>[^'""\s]*)\2[^>]*?>(?<text>(?:(?!</?a\b).)*)");
    MatchCollection match = reg.Matches(_str); for (int i = 0; i < match.Count; i++)
    {
       Console.WriteLine(match[i].Groups["color"].Value);
       Console.WriteLine(match[i].Groups["text"].Value + "----" + match[i].Groups["href"].Value);
    }}
      

  2.   

    Regex reg = new Regex(@"(?is)<a[^>]*?style=(['""]?)[^'""]*?color:\s*?(?<color>[^'"";>]*)[^>]*?\1[^>]*?href=(['""\s]?)(?<href>[^'""\s]*)\2[^>]*?>(?<text>(?:(?!</?a\b).)*)");
    match[i].Groups["color"].Value //#000
      

  3.   

    这个是出来了,但是,加入没有style的时候,他匹配不出来,我想让他在没有的情况下,color取空值.
      

  4.   

    void Main()
    {
        string _str=@"<a style='color: #dffeaa' title=路虎1 href='http://www.baidu.com' target=_blank>路虎1</a>
    <a style='color: #000' title=路虎2 href='http://www.baidu.com' target=_blank>路虎2</a>
    <a style='color: #ccc' title=路虎3 href='http://www.baidu.com' target=_blank>路虎3</a>";
    Regex reg = new Regex(@"(?is)<a\b[^>]*?(style=(?:['""\s]?)color:(?<color>[^'""]*?)\1[^>]*?)?href=(['""\s]?)(?<href>[^'""\s]*)\2[^>]*?>(?<text>(?:(?!</?a\b).)*)");
                MatchCollection match = reg.Matches(_str);         
    }
      

  5.   

    好吧,还是自己研究搞定。
     Regex reg = new Regex(@"(?im)<a\s*(style=""color:(?<color>[^>]*)"")?\s*[^>]*\s*href=(['""\s]?)(?<href>[^'""\s]*)\2[^>]*?>(?<text>(?:(?!</?a\b).)*)");
      

  6.   

    var pattern = @"<a\b(?:style\s*=\s*(?<koS>[""']?)[^""']*?color\s*:\s*(?<ColorValue>[#\w]*)[^""']*\k<koS>|\bhref\s*=\s*(?<koH>[""']?)(?<Href>[^""'\s><]*)\k<koH>|[^><])+>(?<Txt>[^<>]*)";
                   var testTxt = @"<a title=路虎1 href='http://www.baidu.com' target=_blank>路虎1</a>
    <a style='border:1px solid #000; color: #000' title=路虎2 href='http://www.baidu.com' target=_blank>路虎2</a>
    <a style='color: #ccc' title=路虎3 href='http://www.baidu.com' target=_blank>路虎3</a>";               var mcCollections = Regex.Matches(testTxt, pattern, RegexOptions.IgnoreCase);
                   foreach (Match mcItem in mcCollections)
                   {
                        var href = mcItem.Groups["Href"].Value;
                        var colorValue = mcItem.Groups["ColorValue"].Value;
                        var txt = mcItem.Groups["Txt"].Value;
                        Console.WriteLine("H:"+href+"C:".PadLeft(10)+colorValue+"T:".PadLeft(10)+txt);
                   }
      

  7.   

    var pattern = @"<a\b(?:style\s*=\s*(?<koS>[""']?)[^""']*?color\s*:\s*(?<ColorValue>[#\w]*)[^""']*\k<koS>|\bhref\s*=\s*(?<koH>[""']?)(?<Href>[^""'\s><]*)\k<koH>|[^><])+>(?<Txt>[^<>]*)";
                   var testTxt = @"<a title=路虎1 href='http://www.baidu.com' target=_blank>路虎1</a>
    <a style='border:1px solid #000; color: #000' title=路虎2 href='http://www.baidu.com' target=_blank>路虎2</a>
    <a style='color: #ccc' title=路虎3 href='http://www.baidu.com' target=_blank>路虎3</a>";               var mcCollections = Regex.Matches(testTxt, pattern, RegexOptions.IgnoreCase);
                   foreach (Match mcItem in mcCollections)
                   {
                        var href = mcItem.Groups["Href"].Value;
                        var colorValue = mcItem.Groups["ColorValue"].Value;
                        var txt = mcItem.Groups["Txt"].Value;
                        Console.WriteLine("H:"+href+"C:".PadLeft(10)+colorValue+"T:".PadLeft(10)+txt);
                   }