2017-09-05 91 views
-4

我是新來的正則表達式。我正在測試迭代正則表達式。它第一次工作,但第二次模式不會再次初始化。爲什麼這不是在正則表達式中工作?

這裏是我的代碼:

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

你是什麼意思由「* ...模式不再初始化*」?你期望什麼樣的行爲,你觀察到了什麼? – Pshemo

+0

循環第二次運行時p = Pattern.compile(「tan \\([0-9] + \\)」);不工作 – Abhishek

+0

哪個循環?有3.「不工作」的定義是什麼? –

回答

0

檢查你的正則表達式。

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

這不會接受十進制數字。因此前兩個tan(30)被解析,但是tan(十進制數)沒有通過正則表達式,並且它繼續循環。

相關問題