String s="insert into A(a,b) values(a,b)";
String ss[]=s.split("(");此处为何会报异常
请问用正则表达式写"("
谢谢

解决方案 »

  1.   

    因为 split 里的参数不是字符串而是正则表达式啊~~,“(”在正则表达式是具有特殊意义的,需要采用转义。改为:String ss[] = s.split("\\(");或者String ss[] = s.split(java.util.regex.Pattern.quote("("));就可以了,两种方法一样的,第二种方法,碰到正则表达式特殊字符会自动进行转义的,不需要人工干预。
      

  2.   

    来晚了,被bao110908(长牙了,好痛)占了先。
      

  3.   

    有分大家一起赚,另外一点,String提供的split其实是有bug的,不知道大家用的时候注意到了没有,例如String[] strArray = "a|b|c|".split("|");这个分割的结果是有问题的。
      

  4.   

    String[] strArray = "a|b|c|".split("|");应该改成String[] strArray = "a|b|c|".split("[|]");,String的这个方法为什么非要给正则表达式呢?呵呵。
      

  5.   

    使用 split("|") 当然不行了,因为“|”在正则表达式中表示“或”的意思,具有特殊含义的,应转义成“\\|”。至于为什么 split("[|]") 可以呢,因为匹配的是“[ ]”里面字符中的任何一个,只取一个哦,而且除了“^”、“\”外,其他的好像都不要转义的。至于为什么这个方法要使用正则表达式呢,因为正则表达式的功能要比字符串的功能强大啊,字符串能做到的,正则表达式也能做到,但是正则表达式能做到的,字符串就不一定能做到了,比如使用非捕获组(以特定的字符间隙)来拆分之类的。@_@ PS: bit1010 我很喜欢你的签名“小虾风清扬”哦~~