正则表达式将最后一个括号中的子字符串替换为Javascript中三角括号和第一个右右括号之间的字符串

Regular Expression to replace sub string in last parenthisis to strings between trignometric fun and first right closing parenthesis in Javascript

本文关键字:字符串 第一个 之间 三角 Javascript 正则表达式 替换 最后一个      更新时间:2023-09-26

我有一个字符串

pow((sin),(2))(4*x+5)+pow((cos),(3))(4*x+3)/pow((tan),(5))(x)

我需要得到它

pow(sin(4*x+5),2)+pow(cos(4*x+3),3)/pow(tan(x),5)

我尝试的是

1)将基于运算符(+,-,/,*)的表达式拆分为单个单元。

2)提取最后一个括号之间的表达式

3)在pow后的第一个字符串和所有单元的第一个右括号之间插入提取的子表达式。

what I tried:-

 re="pow((sin),(2))(4*x+5)+pow((cos),(3))(4*x+3)+pow((tan),(5))(x)";
    re.split(+);
    re.replaceAll("^[()]]{3}","''('')]*'')");

如果您的计划是对其求值,而不是对其进行词法转换,那么您可以通过定义适当的函数来实现:

function pow(operator, exponent) {
  return function(operand) {
    return Math.pow(operator(operand), exponent);
  };
}
var sin = Math.sin, cos = Math.cos, tan = Math.tan;
var x = 2;
> pow((sin),(2))(4*x+5)+pow((cos),(3))(4*x+3)/pow((tan),(5))(x)
< 0.17654033709528213

您可以使用以下正则表达式和替换字符串:

编辑

正则表达式:([a-z]+)'('(([a-z]+)'),'(([0-9]+)')')'(([a-z0-9'*'+]+)')(['*'-%'/+]*)

替换表达式:$1($2($4),($3))$5

检查以下代码:

function cal()
{
  var string = "pow((sin),(2))(4*x+5)+pow((cos),(3))(4*x+3)/pow((tan),(5))(x)";
  var regex = /([a-z]+)'('(([a-z]+)'),'(([0-9]+)')')'(([a-z0-9'*'+]+)')(['*'-%'/+]*)/;
  var replacement = "$1($2($4),($3))$5";
  while(string.match(regex))
    {
      string = string.replace(regex,replacement);
    }
  alert(string);
}
cal();

我认为正则表达式是处理这个问题的错误工具。您可以在循环中解析表达式并获得内部表达式字符串。

按你想要的方式重组并评估。

解析算法可能是这样的正则表达式用于检测以分号结尾的c++ &while循环