C#正则表达式为格式字符串

时间:2015-01-06 06:13:43

标签: regex

有人可以为我提供以下字符串的正则表达式

{"Name" : "TestName", "Street" : "TestStreet", "Place" : "TestPlace", "Country" : "TestCountry", "Type" : "TestType"}

1 个答案:

答案 0 :(得分:1)

您提供的是JSON字符串,JSON字符串具有级联行为,因此最好不使用正则表达式进行解析。您应该使用Json.Decode

只有当保证文件保持不变时,您才能使用正则表达式对其进行解析。但是我强烈反对它建议,它最终总会失败,因为人们最终会使用非平坦的JSON输入来运行它。但是我们走了(不要说我没有警告过你):

Regex regex = new Regex("^\\s*\\{(\\s*,?\\s*\\\"([^\"]*)\\\"\\s*:\\s*\\\"([^\"]*)\\\")*\\}\\s*$");

然后您可以使用以下方法处理结果:

string json = "{\"Name\" : \"TestName\", \"Street\" : \"TestStreet\", \"Place\" : 
\"TestPlace\", \"Country\" : \"TestCountry\", \"Type\" : \"TestType\"}";

Dictionary<string,string> result = new Dictionary<string,string>();
Match m = regex.Match(json);
if(m.Success) {
    int captures = m.Groups[2].Captures.Count;
    for(int i = 0; i < captures; i++) {
        result.Add(m.Groups[2].Captures[i].Value,m.Groups[3].Captures[i].Value);
    }
}

result不是包含密钥及其对应值的Dictionary<string,string>