字符串:String exp = sin(30)+cos(20)+8-9我想把三角函数作为分隔符 正则表达式为 String reg = "^([a-zA-Z0-9_]+)\\(([a-zA-Z0-9_.()]+)\\)$";我想通过 String[] sArray = exp.split(reg,exp);我希望数组结果是这样的
 sin(30)
 +
 cos(20)
 +8-9
可是为什么截取不了呢  请大家看看!

解决方案 »

  1.   

    楼主是要计算String所表示的表达式吗?这个我倒是有个好办法
      

  2.   

    脚本固然要用到,正则也要用到,像sin,cos这类操作脚本可能并不支持
      

  3.   

    for example
    String exp = "sin(30)+cos(20)+8-9";
    String[] sArray = exp.split("(?<=[)+])(?=\\D)");
    System.out.println(Arrays.toString(sArray));
      

  4.   


    public static void main(String[] args) {
    String str = "sin(30)+cos(20)+8-9";
    String[] arry = str.replaceAll("(?<=\\))([+-/*])(?=[a-z])", ",$1,")
     .replaceAll("(?<=\\))(.{1})(?=\\d)", ",$1")
     .split(",");  
    for (String string : arry) {        
    System.out.println(string);
    }
    }
    conslesin(30)
    +
    cos(20)
    +8-9