无法根据正则表达式正确拆分字符串

时间:2016-11-04 13:04:53

标签: java regex split

我有一个格式为<key1,value1,key2,value2..keyn,valuen>

的示例字符串

为了处理可能有内部逗号的值,我使用了以下逻辑: 写作时

String key = ",KEY1,";
String value = "valu,e";
if(value.contains(",")) {
    value = value.replace(",","\\\\,");
}
//now this key value pair is added to an existing string like above mentioned.

阅读(分裂)

String[] tokens = stringkeyvaluepair.split("(?<!\\\\),");
    for(int i = 0; i < tokens.length; i += 2) {
        if(tokens[i+1].contains("\\,")) {
            tokens[i+1] = tokens[i+1].replace("\\\\,",",");
        }
    }

现在我的零宽度负向后向正则表达式表达式一直工作,直到我的值我有一个结尾\。在这种情况下,它不会从下一个键中分割该值。例如:

String value = "valu,e\\";

在调试器中,索引的令牌数组值显示为:"val\\,ue\,KEY2"

我可以通过将此值(val\\,ue\)与键(KEY2)分开来使我的正则表达式更加智能,或者我是否必须提供结束\的检查,就像我在写中的逗号一样逻辑?

0 个答案:

没有答案