using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(,\s*(*SKIP))?+
# Attempts to match a comma and advanced whitespaces,
# without backtracking;
# And if the comma is matched, use (*SKIP) verb,
# which advances the pointer if we fail to match the comma.
# Key - Value pairs not worthy of keeping.
(
""(?!jobID""|exec)[^""]+"" # Check if we like this key.
\s*+:\s*+ # The colon, advance whitespaces.
( # Check keys recursively.
""[^""]*""
# String literals, boring.
| {(?2)?+(?>,\s*(?2))*}
# Or: An object storing some key-value pairs
# we don't care about.
| \[(?3)?+(?>,\s*(?3))*\]
# Or: An array storing some values
# we don't care about.
)
)
(?(1)|,?)
# Balance the comma (so the result string is still valid JSON)";
string input = @" ""2597401"":[{""jobID"":""2597401"",
""account"":""TG-CCR120014"",
""user"":""charngda"",
""pkgT"":{""pgi/7.2- 5"":{""libA"":[""libpgc.so""],
""flavor"":[""default""]}},
""startEpoch"":""1338497979"",
""runTime"":""1022"",
""execType"":""user:binary"",
""exec"":""ft.D.64"",
""numNodes"":""4"",
""sha1"":""5a79879235aa31b6a46e73b43879428e2a175db5"",
""execEpoch"":1336766742,
""execModify"":""Fri May 11 15:05:42 2012"",
""startTime"":""Thu May 31 15:59:39 2012"",
""numCores"":""64"",
""sizeT"":{""bss"":""1881400168"",""text"":""239574"",""data"":""22504""}},
{""jobID"":""2597401"",
""account"":""TG-CCR120014"",
""user"":""charngda"",
""pkgT"":{""pgi/7.2-5"":{""libA"":[""libpgc.so""],
""flavor"":[""default""]}},
""startEpoch"":""1338497946"",
""runTime"":""33"" ""execType"":""user:binary"",
""exec"":""cg.C.64"",
""numNodes"":""4"",
""sha1"":""caf415e011e28b7e4e5b050fb61cbf71a62a9789"",
""execEpoch"":1336766735,
""execModify"":""Fri May 11 15:05:35 2012"",
""startTime"":""Thu May 31 15:59:06 2012"",
""numCores"":""64"",
""sizeT"":{""bss"":""29630984"",""text"":""225749"",""data"":""20360""}},
{""jobID"":""2597401"",
""account"":""TG-CCR120014"",
""user"":""charngda"",
""pkgT"":{""pgi/7.2-5"": {""libA"":[""libpgc.so""],
""flavor"":[""default""]}},
""startEpoch"":""1338500447"",
""runTime"":""145"",
""execType"":""user:binary"",
""exec"":""mg.D.64"",
""numNodes"":""4"",
""sha1"":""173de32e1514ad097b1c051ec49c4eb240f2001f"",
""execEpoch"":1336766756,
""execModify"":""Fri May 11 15:05:56 2012"",
""startTime"":""Thu May 31 16:40:47 2012"",
""numCores"":""64"",
""sizeT"":{""bss"":""456954120"",""text"":""426186"",""data"":""22184""}},{""jobID"":""2597401"",
""account"":""TG-CCR120014"",
""user"":""charngda"",
""pkgT"":{""pgi/7.2-5"":{""libA"":[""libpgc.so""],
""flavor"":[""default""]}},
""startEpoch"":""1338499002"",
""runTime"":""1444"",
""execType"":""user:binary"",
""exec"":""lu.D.64"",
""numNodes"":""4"",
""sha1"":""c6dc16d25c2f23d2a3321d4feed16ab7e10c2cc1"",
""execEpoch"":1336766748,
""execModify"":""Fri May 11 15:05:48 2012"",
""startTime"":""Thu May 31 16:16:42 2012"",
""numCores"":""64"",
""sizeT"":{""bss"":""199850984"",""text"":""474218"",""data"":""27064""}}],";
RegexOptions options = RegexOptions.IgnorePatternWhitespace;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx