为什么这不是正则表达式?

时间:2017-09-05 19:21:54

标签: java regex

我是正则表达式的新手。我正在测试迭代正则表达式。它第一次有效但第二次模式不再初始化。

这是我的代码:

    public static void main(String  a[])
    {
        String s="1+2+4*5*tan(tan(30))-5.8+tan(30)";
        Pattern p;
        Matcher m;  
        while(s.contains("tan("))
        {
            double[] x=new double [5];  
            p=Pattern.compile("tan\\([0-9]+\\)");
            m=p.matcher(s);
            int i=0;

            while(m.find())
            {

                System.out.println(m.group());
                x[i]=Math.tan(Math.toRadians(Double.parseDouble(m.group().replace("tan(","").replace(")",""))));
                i++;
            }


            for(int z=0;z<i;z++)
            {
                s=s.replaceFirst("tan\\([0-9]+\\)",""+x[z]);


            }
         }
         System.out.println(s);

    }

1 个答案:

答案 0 :(得分:0)

检查你的正则表达式。

"tan\\([0-9]+\\)"

这不接受十进制数字。因此前两个tan(30)得到解析,但是tan(十进制数)没有通过正则表达式并且它继续循环。