在我的c#应用程序中我想解析看起来像以下几行的配置文件:
Attribute1 = Value1
Attribute2 = Value2
Attribute3 = Value3
这就是我为什么逐行获取文件并尝试将它们与RegEx匹配的原因。目前我得到了以下正则表达式:
Match match = Regex.Match(s, @"^" + attribute + @"[\s]* [=] [\s]* (^.*)$", RegexOptions.IgnoreCase);
实际上,这不起作用。我认为=
之后的部分是问题所在,因为如果没有那个问题,它就可以了。有没有人知道如何解决这个字符串?提前谢谢!
答案 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
,其中属性的名称将是键,属性的值将是值。