fork(1) download
  1. #include <iostream>
  2. #include <regex>
  3. using namespace std;
  4.  
  5. int main (int argc, const char * argv[]) {
  6. std::string test = R"(
  7. "People"
  8. {
  9. "Person 1"
  10. {
  11. "age" "34"
  12. "name" "John"
  13. "gender" "male"
  14. "skills"
  15. {
  16. "skill 1" "Intelligent"
  17. "skill 2" "Wise"
  18. "skill 3" "Buff as a bear!"
  19. }
  20. }
  21. "Person 2"
  22. {
  23. "age" "25"
  24. "name" "Jamie"
  25. "gender" "helicopter"
  26. }
  27. }
  28. )";
  29. regex reg(R"(("[^"]+")\s+("[^"]+"))");
  30. test = std::regex_replace(test, reg, "$1:$2,");
  31. regex reg2(R"((?:\A|\n)\s*("[^"]+")\s*(\n|\Z))");
  32. test = std::regex_replace(test, reg2, "$1:");
  33. regex reg3(R"(}\s*("[^"]+"):\s*\{)");
  34. test = std::regex_replace(test, reg3, "},\n$1: {");
  35. regex reg4(R"(,\s*})");
  36. test = std::regex_replace(test, reg4, "}");
  37. cout << "{" << test << "}" << endl;
  38. }
Success #stdin #stdout 0s 4464KB
stdin
Standard input is empty
stdout
{"People":{"Person 1":    {
        "age":"34",
        "name":"John",
        "gender":"male","skills":        {
            "skill 1":"Intelligent",
            "skill 2":"Wise",
            "skill 3":"Buff as a bear!"}
    },
"Person 2": {
        "age":"25",
        "name":"Jamie",
        "gender":"helicopter"}
}
}