Regex математика с идеальными концевыми скобками

Это моя строка

{10
     {-55
             {{55x}{55}*55}
             {2}{5}
        }{10}
     }
     {55}

Мне нужно изменить {a}{b} в (a/b) Но они содержат больше нет } мне нужно соответствовать уважаемым скобкам

как ниже:

 (10 
     ((-55(55x/55)*55))
             /(2/5) 
         /10)
         /55)

отрывок

var a = '{10{-55{{55x}{55}*55}{2}{5} }{10}}{55}';

console.log(a.replace(/{(.*)}{(.*)}(?!.*\1)/g, "($1/$2)"))

Я не хорошо в регулярных выражениях может кто-нибудь помочь мне..

1 ответ

Вы можете попробовать что-то вроде этого:

  • Заменить все }{ от /
  • Затем заменить все { от ( а также } от )

var a = '{10{-55{{55x}{55}*55}{2}{5} }{10}}{55}';
var b = a.replace(/}{/g, "/");
b = b.replace(/{/g, "(");
b = b.replace(/}/g, ")");
console.log(b)


Предостережение

Как отметил @ Darren Sweeney, результат не совсем тот же, но в моем понимании это опечатка. Если вы обратите внимание, {10{-55 должен быть проанализирован (10(-55 и не (10((55, Также эта дополнительная открывающаяся скобка ( делает уравнение неуравновешенным.

Input: '{10{-55{{55x}{55}*55}{2}{5} }{10}}{55}'
Output: (10((55-(55x/55)*55))/(2/5)/10)/55)
//          ^
Другие вопросы по тегам