有人可以为我提供以下字符串的正则表达式
{"Name" : "TestName", "Street" : "TestStreet", "Place" : "TestPlace", "Country" : "TestCountry", "Type" : "TestType"}
答案 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>
。