我目前正在另一篇文章中使用此正则表达式:
",(?=([^\"]*\"[^\"]*\")*[^\"]*$)"
当我尝试拆分文本文件时,它对我来说非常有效。我需要用文本文件中的每个单独元素填充一个数组,用逗号(引号内的逗号除外)和任何类型的换行符(这是.txt文件)分隔。
以上正则表达式适用于逗号,如何修改它以适用于换行符?
编辑:对不起,以下是我要拆分的一些例子:
20120102,1,1374,2,"Santorum, Rick","Romney, Mitt"
20120102,1,1158,2,99,"Romney, Mitt"
20120102,1,1237,26,99,99
20120102,1,1839,3,99,"Pennington, Matthew"
20120102,1,1431,25,99,99
20120102,1,976,5,99,99
20120104,1,1508,2,99,99
20120104,1,1379,2,99,99
所以用逗号分隔的所有内容都是一个单独的元素。每个名称(用引号括起来)都是一个单独的元素(但不包含引号)。 \ n,\ r \ n和其他换行符不会被包含在内。所有这些元素都将附加到一个arraylist。我不知道正则表达式是否可行。
答案 0 :(得分:0)
像String[] arr="foo\nbar,\"fo,o\"\n\"bar\"".split("(\\r|\\n|,)(?=([^\"]*\"[^\"]*\")*[^\"]*$)")
使用for(String e:arr){arraylist.add(e.replaceAll("^\"|\"$", ""));}
-
但我怀疑这个正则表达式在某些角落案件中被打破了。使用库应该比Regex更好。例如。 http://commons.apache.org/proper/commons-csv/