извлечение текста между несколькими двумя скобками

#javascript

#javascript

Вопрос:

У меня есть эти переменные ниже :

 let x = '5(2 1(3(4-1))';
let y = [];
 

Мне нужно извлечь любую строку между () и нажать array , чтобы она выводилась как:

 console.log(y); // Array should be y[4-1,3,2 1,5]
 

Как я могу это решить?

Комментарии:

1. Используйте RDP: en.wikipedia.org/wiki/Recursive_descent_parser

2. Разбор арифметических выражений в круглых скобках: blog.roboblob.com/2014/12/16 /…

3. Учитывая, что сплющенная структура не представляет вложенности исходных выражений или каких-либо отношений между ними, вы также можете просто использовать x.split(/(|)/g)

Ответ №1:

попробуйте использовать это регулярное выражение

 let x = '5(2 1(3(4-1))';
let y = [];

let regex = /(?(d ([ -]d )?)/gm;
let m
while ((m = regex.exec(x)) !== null) {
  y.push(m[1])
}
y = y.reverse()
console.log(y) 

Ответ №2:

Это может быть достигнуто путем рекурсивного применения получения регулярных выражений и замены пары inner most () до тех пор, пока не останутся только последние 5, или путем создания реального синтаксического анализатора.

В зависимости от того, как может выглядеть ввод, регулярное выражение может не работать.

Но простого решения не существует, и это будет зависеть от того, какой именно формат вы можете получить.