使用正则表达式

时间:2017-04-25 07:48:26

标签: c# regex

我有这个字符串:[{"Weight":70,"CustomerId":45},{"Weight":30,"CustomerId":733‌​}] 请注意,引号是此字符串的一部分 我需要提取数字' weight'和' customerId'分别。 我尝试这样做是为了减肥:

MatchCollection Weightmatches = Regex.Matches(r["Formula"].ToString(), @"""Weight"":(\d+),");

(此字符串上可能有更多的重量或客户编号)

但我似乎无法理解如何单独隔离数字。

请帮助!!

2 个答案:

答案 0 :(得分:1)

要正确解析JSON,建议使用JSON解析器。 JSON.NET提供了一个,只需将其安装为NuGet包并使用以下代码:

var json_data = "[{\"Weight\":70,\"CustomerId\":45},{\"Weight\":30,\"CustomerId\":733}]";
dynamic parsedObject = Newtonsoft.Json.JsonConvert.DeserializeObject(json_data);
var results = new List<KeyValuePair<int, int>>();
foreach (dynamic entry in parsedObject)
{
    if (entry.Weight != null && entry.CustomerId != null)
        results.Add(new KeyValuePair<int, int>(int.Parse(entry.Weight.ToString()), int.Parse(entry.CustomerId.ToString())));
}

输出:

enter image description here

答案 1 :(得分:0)

使用JSON解析器是正确的答案。但我想你可以做一个与此类似的正则表达式搜索

(?:["][^"]+["] : (\d+))

或者如果你想捕捉文字:

(?:["]([^"]+)["] : (\d+))