0

我想构建一个程序来抓取一些网站,检查 style.css 文件,打开它,并使用正则表达式,#([a-z]|[A-Z]|[0-9])([a-z]|[A-Z]|[0-9])([a-z]|[A-Z]|[0-9])([a-z]|[A-Z]|[0-9])([a-z]|[A-Z]|[0-9])([a-z]|[A-Z]|[0-9])(?=;)我想获得 style.css 的前 5 种颜色

如果我的正则表达式结果中有 200 种颜色,我想获得前 5 个含义。

例如,我的正则表达式会找到这个颜色 #ffffff 100 次,这意味着这将是我的第一个颜色。

颜色#343434 将被找到 98 次,这将是我的第二个颜色。

依此类推,从 style.css 文件中获取前 5 种颜色。

关于如何实现这一点的任何想法?

我在这里找到了这样的例子:

var l1 = new List<int>() { 1,2,3,4,5,2,2,2,4,4,4,1 };

        var g = l1.GroupBy( i => i );

        foreach( var grp in g )
        {
           Console.WriteLine( "{0} {1}", grp.Key, grp.Count() );
        }

但这并不是我真正想要的。

欢迎任何想法。

提前致谢。

4

3 回答 3

2

您可以尝试以下方法:

var topMatches = Regex.Matches(stringToCheck, RegExPattern)
    .Cast<Match>()
    .GroupBy(m => m.Value)
    .Select(m => new{ Colour = m.Key, Count = m.Count() })
    .OrderByDescending(g => g.Count)
    .Take(5)
    .ToList();
于 2012-12-09T13:43:27.427 回答
1
var colors = l1.GroupBy(x => x)
                .OrderByDescending(g => g.Count())
                .Select(g => g.Key)
                .Take(5)
                .ToList();
于 2012-12-09T13:44:34.010 回答
0

像这样的东西:

var g = <your matches>.
    GroupBy(i => i).
    OrderByDescending(grp => grp.Count()).
    Take(5).
    Select(k => k.Key).
    ToList();
于 2012-12-09T13:44:32.177 回答