使用正则表达式拆分简单的数学表达式

发布于 2021-01-30 16:59:02

我正在尝试使用运算符-+ * /将正则表达式拆分为1.5 + 4.2 *(5 + 2)等式,以便将输出输入到数组中,以便我可以单独解析

[0]1.5
[1]+
[2]4.2
[3]*
[4](
[5]5
[6]+
[7]2
[8])

我发现\b可以使用,1+2+3但是如果我要保留小数点,它将不会拆分。

我已经尝试过分割,\b(\.\d{1,2})但是它不会在小数点上分割

关注者
0
被浏览
96
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。
    Pattern pattern = Pattern.compile("((\\d*\\.\\d+)|(\\d+)|([\\+\\-\\*/\\(\\)]))");
    Matcher m = pattern.matcher("1.5+4.2*(5+2)/10-4");
    while(m.find()) {
        System.out.printf("%s ", m.group());
    }
    
    output: 1.5 + 4.2 * ( 5 + 2 ) / 10 - 4
    

    您还可以使用?:避免捕获组。我把它简化了。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看