【发布时间】:2014-04-27 19:15:55
【问题描述】:
String testString = "a\\,b\\\\,c,d\\\\\\,e,f\\\\g";
String[] splitedString = test.split(PATTERN_STRING);
for (String string : splitedString) {
System.out.println(string);
}
这里我有一个字符串,它将字符串列表编码为字符串,其中转义字符为 \,分隔符为 ,
注意:(示例中的反斜杠因 Java 代码而加倍)
反斜杠和逗号在原始字符串和结果字符串用逗号合并。我需要一个正则表达式将此字符串拆分为原始字符串列表。
所以以字符串为例
"a\,b\\,c,d\\\,e,f\\g"我需要得到这样的字符串:
"a\,b\\"
"c"
"d\\\,e"
"f\\g"
所以拆分的逻辑很简单:仅当反斜杠的数量为偶数时才使用分隔符逗号拆分:0,2,4...仅在这种情况下,此逗号是分隔符。如果逗号前的反斜杠数量是奇数,则它是转义逗号,不应发生拆分。
任何人都可以帮助我为这种情况使用适当的正则表达式吗?
编辑
我知道这个正则表达式:(?<!\\\\), 将有助于用逗号分割字符串,而逗号之前没有反斜杠。但在我的情况下,如果逗号之前的斜线数量是偶数,我也需要拆分。
感谢任何帮助。
【问题讨论】:
-
很像 this question 不久前问的!
-
我建议找到一个库来进行解析,而不是尝试使用正则表达式从头开始:google.com/search?q=java+csv+parser