RegEx解析配置文件

时间:2015-01-16 10:33:19

标签: c# regex parsing

在我的c#应用程序中我想解析看起来像以下几行的配置文件:

Attribute1 = Value1
Attribute2 = Value2
Attribute3 = Value3

这就是我为什么逐行获取文件并尝试将它们与RegEx匹配的原因。目前我得到了以下正则表达式:

Match match = Regex.Match(s, @"^" + attribute + @"[\s]* [=] [\s]* (^.*)$", RegexOptions.IgnoreCase);

实际上,这不起作用。我认为=之后的部分是问题所在,因为如果没有那个问题,它就可以了。有没有人知道如何解决这个字符串?提前谢谢!

2 个答案:

答案 0 :(得分:2)

您需要删除捕获组中存在的起始锚^,其中^断言我们位于一行的开头。而且你也不需要在=的字符类中加入=就行了。 \s*匹配零个或多个空格,因此您无需在\s*之后显式包含空格。

Match match = Regex.Match(s, @"^" + attribute + @"\s*=\s*(.*)$", RegexOptions.IgnoreCase);

答案 1 :(得分:2)

假设file持有字符串。然后你可以简单地做到这一点而不需要正则表达式。

var keyValPair = file.Split('\n').ToDictionary(k => k.Split('=')[0].Trim(),
                                               v => v.Split('=')[1].Trim());

现在你有一个键值Dictionary,其中属性的名称将是键,属性的值将是值。