如何提取CSS文件中的所有颜色?现有代码仅提取前2个,求循环方案
提取CSS文件中所有颜色的C#解决方案
- 使用
Regex.Matches替代Regex.Match,后者仅返回第一个匹配项,前者会返回所有符合规则的匹配结果 - 合并正则表达式,同时匹配
color和background-color属性,简化代码逻辑 - 通过
foreach循环遍历所有匹配项,收集全部颜色值
修正后的代码:
private void btnLoadFile_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); if (openFileDialog1.ShowDialog() == DialogResult.OK) { string cssString = File.ReadAllText(openFileDialog1.FileName); // 匹配color和background-color属性的颜色值,忽略大小写 string pattern = @"(color|background-color):\s*(.+?);"; MatchCollection matches = Regex.Matches(cssString, pattern, RegexOptions.IgnoreCase); List<string> allColors = new List<string>(); foreach (Match match in matches) { // 提取第二个捕获组的颜色值并去除首尾空白 string colorValue = match.Groups[2].Value.Trim(); allColors.Add(colorValue); } // 示例:将收集到的颜色输出到控制台 foreach (string color in allColors) { Console.WriteLine(color); } } }
关键说明
Regex.Matches返回的MatchCollection包含所有匹配的结果,解决了原代码只能获取前2个颜色的问题- 正则表达式中的
\s*适配属性名与冒号之间的空白字符,RegexOptions.IgnoreCase兼容大小写不同的属性写法 foreach循环是遍历匹配集合的最直接方式,逐个提取颜色值并存储
内容的提问来源于stack exchange,提问作者Inna Nazwa
相关产品推荐
相关产品推荐

