配置文件的正则表达式解析
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
,其中属性的名称将是键,属性的值将是值。
在我的 C# 应用程序中,我想解析如下所示的配置文件:
Attribute1 = Value1
Attribute2 = Value2
Attribute3 = Value3
这就是我逐行获取文件并尝试将它们与 RegEx 匹配的原因。目前我得到以下正则表达式:
Match match = Regex.Match(s, @"^" + attribute + @"[\s]* [=] [\s]* (^.*)$", RegexOptions.IgnoreCase);
实际上,这是行不通的。我认为 =
之后的部分是问题所在,因为没有那个部分它工作正常。有谁知道如何解决这个字符串?提前致谢!
您需要删除捕获组中的起始锚点 ^
,其中 ^
断言我们在一行的开头。而且你不需要在字符 class 中包含 =
只是 =
就可以了。 \s*
匹配零个或多个 space,因此您无需在 \s*
.
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
,其中属性的名称将是键,属性的值将是值。