知道java中怎么用正则表达式去掉sql代码段的注释吗?
比如
create teable testtable1as
(select * from tablename1
);
--sql2
create teable testtable2as
(select * from tablename2
);
/*sql3*/
create teable testtable3as
(select * from tablename3
);
要把这两种注释都去了,正则表达式如何写呀?

解决方案 »

  1.   

    To UnAgain() 
    怎样考虑换行回车?
      

  2.   

    回车换行我已经考虑了你可以试试下面的代码。String regex =  "[/*].*((\r)?+(\n)*(.)*)*[*/]";
    String[] sa = new String[4];// 格式1
    /**
     * ABCDEFG
     * ABCDEFAG
     * DGDGDG
     */
    sa[0] = "/**\r\n * ABCDEFG\r\n * ABCDEFAG\r\n * DGDGDG\r\n */"; // \r\n
    sa[1] = "/**\n * ABCDEFG\n * ABCDEFAG\n * DGDGDG\n */";         // \n// 格式2
    /* ABCDEFG
    ABCDEFAG
    DGDGDG */sa[2] = "/*ABCDEFG\r\nABCDEFAG\r\nDGDGDG*/";  // \r\n
    sa[3] = "/*ABCDEFG\nABCDEFAG\nDGDGDG*/";      // \nfor (int i=0; i<sa.length; i++) {
        System.out.println(
            Pattern.matches(regex, sa[i]));
    }
      

  3.   

    再加一条也没问题。String[] sa = new String[5];
    ...
    sa[4] = "/*ABCDEFGABCDEFAGDGDGDG*/"; 
    ...
      

  4.   

    String regex =  "[/*].*((\r)?+(\n)*(.)*)*[*/]";-->String regex =  "(/*).*((\r)?+(\n)*(.)*)*(*/)";请问 这样为什么不行呢?我试了一下 把 *换成 其他字符比如 8 两种写法就都可以的。
    请解释一下原因..
      

  5.   

    其实正确的写法应该是
    String regex =  "[/*].*((\r)?+(\n)*(.)*)*[*/]";--〉String regex =  "(/\*).*((\r)?+(\n)*(.)*)*(\*/)";