提取关键值对我需要解析的内容较长块:C#从字符串
content block 1 content block 2 key1="value1" key2="val2" some other content content block 3 key3="value3" other content more content
我需要得到字典或任何结构,我可以通过(数组,集合等)循环。 到目前为止,我在看两个选项:正则表达式或某种拆分到数组中。
提取关键值对我需要解析的内容较长块:C#从字符串
content block 1 content block 2 key1="value1" key2="val2" some other content content block 3 key3="value3" other content more content
我需要得到字典或任何结构,我可以通过(数组,集合等)循环。 到目前为止,我在看两个选项:正则表达式或某种拆分到数组中。
尝试此图案:
(\w+)="(.+?)"
然后在每个迭代匹配,并提取Group[1].Value
(键),Group[2].Value
(值)。
也许是这样的:
string text = @"
content block 1
content block 2 key1=""value1"" key2=""val2"" some other content
content block 3 key3=""value3"" other content
more content
";
var pattern = @"(?<key>\w+)\s*=\s*""(?<value>[^""]*)""";
var matches = Regex.Matches(text, pattern);
var dictionary = new Dictionary<string, string>();
foreach (Match match in matches)
dictionary.Add(match.Groups["key"].Value, match.Groups["value"].Value);
您可能需要微调的格局。对于密钥,它会抓取集合[A-Za-z0-9_]
中的任何内容,然后是=
符号。
该值是任何不是在=
符号后面的引号内的"
。但是,如果您的值字符串中有"
s,则需要对其进行调整。
它还允许在=
周围的可选空间,但如果需要可以拧紧。
这可能是最接近我正在寻找的东西,它向我证实我必须分两步做,而不是一次性完成所有事情 – shiraz
你的问题是什么? –
对不起,问题是我如何提取对(key1,value1),(key2,value2),(key3,value3)? – shiraz