正则表达式将最后一个括号中的子字符串替换为Javascript中三角括号和第一个右右括号之间的字符串
Regular Expression to replace sub string in last parenthisis to strings between trignometric fun and first right closing parenthesis in Javascript
我有一个字符串
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循环
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- IE11中的第二个调用取消了第一个Fetch API调用
- jquery从2个json字符串构建一个复选框表单
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 用jQuery将字符串从一个类替换为另一个类
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- RxJS油门行为;立即获取第一个值
- Angular UI网格:如何通过第一个UI网格中的按钮使第二个UI网格可见
- 选择多个实例中的第一个
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- 使用 javascript 和正则表达式删除 HTML 字符串中的第一个 img 标记
- 如何检查多维数组中是否存在字符串,然后显示数组中找到该字符串的第一个项
- 如何在第一个“/”(斜杠)处拆分字符串并将其部分包围在“中
- 使用脚本查找文本字符串,直到第一个html标记
- 从字符串列表中删除所有html标记,除了第一个
- Javascript字符串:删除除数字和第一个"
- 如何迭代javascript行分隔的字符串,检查分号分隔的第一个值,并在值相等的地方连接行