Я считаю, что /(Symbol\([^)]*\):\s*\{(?:[^}]*[\n\r\s])*})/
- это регулярное выражение, которое вам нужно для этого.
После преобразования ваших данных в строку вы сможете сопоставить, используя это регулярное выражение, чтобы получить Символ и все остальное.внутри него.
Однако он не сможет получить запятую раньше или дополнительную }
закрывающую скобку, но в остальном он не отклоняется от требований
let data = `{
"aboutYourself": {
"creditFile": true,
"dateOfBirth": {
"date": {
"day": 3,
"month": 5,
"year": 1992
}
},
Symbol(KEY): {
"kind": "Quote",
"namespace": undefined,
"path": [
"Quote",
undefined
]
}
};`
let regex = /(Symbol\([^)]*\):\s*\{(?:[^}]*[\n\r\s])*})/;
console.log(regex.exec(data)[0]);
После этого это всего лишь случай выполнения замены с результатом совпадения пробела, и задание хорошо 'n