(1)"select avg(age),sex from a where sex>20 group by Sex" (2)"select avg(age),sex from a where sex>20 group by Sex,city"
字符串如上(格式基本固定,只是group by 后可能有多个分组),要求得到()里的内容和group by后的内容比如上面:(1)得出 age sex   (2) 得出age sex city

解决方案 »

  1.   

    import java.util.regex.Pattern;
    import java.util.regex.Matcher;public class Test {    public static void main(String[] args) {
            Pattern pattern1 = Pattern.compile( "\\(.*\\)" );
            Pattern pattern2 = Pattern.compile( "(group by).*" );
            Matcher matcher1 = pattern1.matcher( "select avg(age),sex from a where sex>20 group by Sex" );
            Matcher matcher2 = pattern2.matcher( "select avg(age),sex from a where sex>20 group by Sex" );
            
            while (matcher1.find( )) {
                System.out.println( matcher1.group( 0 ).substring( 1, matcher1.group( 0 ).length( )-1 ) );
            }
            
            while (matcher2.find( )) {
                System.out.println( matcher2.group( 0 ).substring( "group by".length( ) ) );
            }
        }}