一个比较笨的方法先replaceAll("?:","⊙");
再String.split()时以“:”分隔
最后再replaceAll("⊙","?:");

解决方案 »

  1.   

    如果用正则表达式的话就这样吧
    split("[^\\?]:");
      

  2.   

    split("[^\\?]:");这样写有问题,替换后变成
    “abc”
    “ef”
    “hig?:klmn”
      

  3.   

    阿木的对,如果用thomas_20的方法会把:前面的那个字符吃掉
      

  4.   

    搞了1个小时终于碰对了,放出正解:
    String str = "abcd'efg'hig?'klmn";
    String[] data = str.split("(?<!\\?)'");
    for (int i = 0; i < data.length; i++) {
    System.out.println(data[i]);
    }
    abcd
    efg
    hig?'klmn========================
    摘自java.util.regex.Pattern的API Docs:
    (?<!X) X, via zero-width negative lookbehind