當前位置:成語大全網 - 新華字典 - 用python正則表達式替換字符串問題 我用python寫壹個計算器,想用正則表達式將字符串中的壹些內容替換,

用python正則表達式替換字符串問題 我用python寫壹個計算器,想用正則表達式將字符串中的壹些內容替換,

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