现有字符串如下所示"a;b;c;d";e;f,我想用java String的split放发将该字符串分割为"a;b;c;d"、e、f这样的形式。也就是说忽略双引号之间的分号,请问正则应该怎么写?
String test = "F;SD;\"a;b;c;d\";\"a;6Y;d\";e;f";
List<String> stringList = new ArrayList<String>();
Pattern p = Pattern.compile("\".*?\"");
Matcher m = p.matcher(test);
StringBuffer sb = new StringBuffer();
while(m.find()){
stringList.add(m.group());
m.appendReplacement(sb, "");
}
m.appendTail(sb);
String[] ss = sb.toString().split(";");
for (int i = 0; i < ss.length; i++) {
if(!ss[i].equals("")){
stringList.add(ss[i]);
}
}
for (int i = 0; i < stringList.size(); i++) {
System.out.println(stringList.get(i));
}
这个直接字符串查找,解析一下就可以了