最近用java写一个小工具处理csv,不想引用额外的库,一开始使用split(“,”)分割,发现当双引号文本中有逗号时会分割错误,上网查一下,可以用正则表达式进行分割,避免分割错误。
正则表达式:
// 双引号文本正则,未转义
,(?=(?:[^"]*"[^"]*")*[^"]*$)
// 单引号文本正则,未转义
,(?=(?:[^']*'[^']*')*[^']*$)
regex代码:
String line = "foo,bar,c;qual=\"baz,blurb\",d;junk=\"quux,syzygy\"";
String[] tokens = line.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", -1);
Java