展开全部
先用e68a84e8a2ad62616964757a686964616f31333363363538正则表达式 sin\((\d+(\.\d+)?)\) 取第一捕获组的数据
把sin(45)中的角度值angle匹配出来,然后计算出sin(angle)的值value,
最后用正则表达式 "sin\("+angle+"\)" 替换成String.valueOf(value) //value的字符串形式
我给你一个完整的Java语言的例子,你看看吧.import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AA {
public static void main(String[] args) {
String s="1+2*3-(5/6)+sin(45)-ln(100)";
String regex="sin\\((\\d+(\\.\\d+)?)\\)";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
while(m.find()){
String angle=m.group(1);//取出sin函数的角度值
double d=Double.parseDouble(angle);//把角度值转换成double型
double value=Math.sin(d/180*Math.PI);//把角度值转换成弧度值然后计算sin函数值
s=s.replaceAll("sin\\("+angle+"\\)", String.valueOf(value));//把相应的sin(45)字符串替换成sin函数值
System.out.println(s);//输出结果,你也可以在程序最后输出结果,也就是在while循环完成后输出结果
}
}
}
运行结果
1+2*3-(5/6)+0.7071067811865475-ln(100)