配置文件的正则表达式解析

RegEx parsing for config files

在我的 C# 应用程序中,我想解析如下所示的配置文件:

Attribute1 = Value1
Attribute2 = Value2
Attribute3 = Value3

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

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

实际上,这是行不通的。我认为 = 之后的部分是问题所在,因为没有那个部分它工作正常。有谁知道如何解决这个字符串?提前致谢!

您需要删除捕获组中的起始锚点 ^,其中 ^ 断言我们在一行的开头。而且你不需要在字符 class 中包含 = 只是 = 就可以了。 \s* 匹配零个或多个 space,因此您无需在 \s*.

之后明确包含 space
Match match = Regex.Match(s, @"^" + attribute + @"\s*=\s*(.*)$", RegexOptions.IgnoreCase);

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

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

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