用python正则表达式替换字符串问题 我用python写一个计算器,想用正则表达式将字符串中的一些内容替换,
举个例子字符串如下1+2*3-(5/6)+sin(45)-ln(100)如何用正则表达式先找到其中有sin()的内容,然后将sin(45)这个子串提取出来算出其值,然后用...
举个例子字符串如下
1+2*3-(5/6)+sin(45)-ln(100)
如何用正则表达式先找到其中有sin()的内容,然后将sin(45)这个子串提取出来算出其值,然后用值去替换字符串中sin(45) 展开
1+2*3-(5/6)+sin(45)-ln(100)
如何用正则表达式先找到其中有sin()的内容,然后将sin(45)这个子串提取出来算出其值,然后用值去替换字符串中sin(45) 展开
1个回答
展开全部
先用正则表达式 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)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询