2 flylee58880545 flylee58880545 于 2013.07.11 14:12 提问

关于正则表达式"a;b;c;d";e;f

现有字符串如下所示"a;b;c;d";e;f,我想用java String的split放发将该字符串分割为"a;b;c;d"、e、f这样的形式。也就是说忽略双引号之间的分号,请问正则应该怎么写?

2个回答

su1216
su1216   2013.08.26 20:10
已采纳
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));
}
qq_33132107
qq_33132107 1216
大约 2 年之前 回复
oyljerry
oyljerry   Ds   Rxr 2015.01.03 13:22

这个直接字符串查找,解析一下就可以了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!