【问题标题】:Java Regex replaceAll()Java 正则表达式 replaceAll()
【发布时间】:2015-03-22 00:05:58
【问题描述】:

以下代码通过删除变量项、取幂运算符和次数来解析多项式表达式,以确定多项式的系数。

代码:

String expression = "x^10 + 6x^2 + 9";

expression = expression.replaceAll("(\\^\\d)?", ""); //fix
expression = expression.replaceAll("x", "(1)");

System.out.print(expression); 

结果:

(1)0 + 6(1) + 9 //intended result: (1) + 6(1) + 9

如果项的度数 >= 10,该方法将简单地删除度数的第一位。有什么方法可以替换整个数字(在本例中为 10)。

【问题讨论】:

    标签: java regex parsing


    【解决方案1】:

    这也应涵盖多于一位的数字。 (+ 在 d 之后)

        String expression = "x^10 + 6x^2 + 9";
    
        expression = expression.replaceAll("(\\^\\d+)?", ""); //fix
        expression = expression.replaceAll("x", "(1)");
    
        System.out.print(expression); 
    

    【讨论】:

      【解决方案2】:

      只需在\d 后面加上+
      + 表示一个或多个重复。

      expression = expression.replaceAll("(\\^\\d)?", ""); //fix
      

      变成

      expression = expression.replaceAll("(\\^\\d+)?", ""); //fix
      

      【讨论】:

        【解决方案3】:

        您的正则表达式只选择一位数字。添加+ 以选择至少一位数字:\\^\\d+

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-08
          • 1970-01-01
          • 1970-01-01
          • 2019-01-05
          • 1970-01-01
          • 1970-01-01
          • 2020-03-12
          • 1970-01-01
          相关资源
          最近更新 更多