2017-02-23 106 views
1

的一部分,我有以下的字符串类型的正则表达式保留字符串

{"pid":{"source":"Doc","name":"pid","value":"8180"}, 
"cid":{"source":"Doc","name":"cid","value":null}, 
"fid":{"source":"Doc","name":"fid","value":"ME453REN0004"}} 

我需要得到以下字符串

{"pid":"8180", 
    "cid":null, 
    "fid":"ME453REN0004"} 

如何使用正则表达式呢?

+2

是否有一个原因,你不会宁愿JSON解析这个使用[JSON.net](http://www.newtonsoft.com/json)?对于订购改变来说,它将变得更加脆弱。 –

回答

2

你可以试试这个:

"([^"]*)".*:([^{]*)\}(,|\}) 

Explanation

Sample Code

public class Test 
{ 
    public static void Main() 
    { 
     string pattern = @"""([^""]*)"".*:([^{]*)\}(,|\})"; 
     string input = @"{""pid"":{""source"":""Doc"",""name"":""pid"",""value"":""8180""}, 
""cid"":{""source"":""Doc"",""name"":""cid"",""value"":null}, 
""fid"":{""source"":""Doc"",""name"":""fid"",""value"":""ME453REN0004""}} 
"; 
     string result="{"; 
     foreach (Match m in Regex.Matches(input, pattern)) 
     { 

      result+=m.Groups[1].Value+":"+m.Groups[2].Value+m.Groups[3]+"\n"; 
     } 
     Console.WriteLine(result); 
    } 
} 
0

我想你最好使用JSON解析器,但这里是我的,如果由于某种原因,两分钱,你必须使用正则表达式:

"name":("\w+"),"value":("?\w+"?) 

请参阅regex101上的工作示例。

希望它有帮助。