2017-02-23 1 views
1

의 일부를 유지하는 종류의 나는 다음과 같은 문자열이의 정규 표현식을 사용할 수있는 방법정규 표현식 내가 다음의 문자열을 문자열

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

을 얻을 필요가

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

?

+2

[JSON.net] (http://www.newtonsoft.com/json)을 사용하여 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의 작업 예제를 참조하십시오.

희망이 있습니다.

관련 문제