先用正則表達式 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)