2017-02-23 1 views
1

Ich habe eine Reihe von folgenden ArtRegulärer Ausdruck Teil der Zeichenfolge

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

Ich muss behalten die folgende Zeichenfolge

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

bekommen Wie den regulären Ausdruck für diese verwenden kann?

+2

Gibt es einen Grund, warum JSON nicht lieber mit [JSON.net] (http://www.newtonsoft.com/json) analysieren würde? Es wird viel weniger anfällig für Veränderungen sein. –

Antwort

2

Sie können dies versuchen:

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

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

Ich glaube, Sie besser json Parser hier verwenden würde, aber meine zwei Cent, wenn aus irgendeinem Grund, Sie müssen Regex dafür verwenden:

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

Siehe das Arbeitsbeispiel unter regex101.

Ich hoffe, es hilft.

Verwandte Themen