怎么用一个正则表达式表示一个字符串中是否含有字母"abs",并要把该字符串后面括号内的内容给提取出来,例如
String s=x1^2+x2^2+1/(4*5.0)*((abs(1.0-2*5.0*(x1+5))+(1.0-2*5.0*(x1+5)))/2-1.0*1.0)-1.0*(x1+x2-4)+5.0*(x1+x2-4)
怎样把"(1.0-2*5.0*(x1+5))"找出来???
有哪位好心人能帮小妹看看不?本人将感激不尽~~~~~~~~~~

解决方案 »

  1.   

    小妹呀,gg我没本事,给你写个死的,凑合着用吧.import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class xm { public static void main(String[] args) {
    String s="x1^2+x2^2+1/(4*5.0)*((abs(1.0-2*5.0*(x1+5))+(1.0-2*5.0*(x1+5)))/2-1.0*1.0)-1.0*(x1+x2-4)+5.0*(x1+x2-4)";
    String ptn="abs\\((1\\.0\\-2\\*5\\.0\\*\\(x1\\+5\\))\\)";
    Pattern p=Pattern.compile(ptn);
    Matcher m=p.matcher(s);
    while(m.find()){
    System.out.println(m.group(1));
    }
    }
    }
      

  2.   

    小妹呀,gg我也没本事,就不给用regex了
    string a = ...;
    a.contain?();
      

  3.   

    不适合用正则表达式
    indexOf("abs");
      

  4.   

    String s="x1^2+x2^2+1/(4*5.0)*((abs(1.0-2*5.0*(x1+5))+(1.0-2*5.0*(x1+5)))/2-1.0*1.0)-1.0*(x1+x2-4)+5.0*(x1+x2-4)";

    int index=s.indexOf("abs");
    if(index>0){
    int  count=0;
    int last=0;
    for(int i=index+3;i<s.length();i++){
    char c=s.charAt(i);
    if(c=='(') count++;
    else if(c==')') count--;
    if(count==0){last=i;break;}
    }
    System.out.println(s.substring(index+3,last+1));
    }