2017-02-23 109 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上的工作示例。

希望它有幫助。