提取關鍵值對我需要解析的內容較長塊: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