正規表現でCSVをパース
正規表現でCSVをパースする。CSVの条件は
- 全ての値はダブルクォート
"
で囲まれており、値内のダブルクォートはエスケープされている - 各値はカンマ
,
で区切られており、区切りの前後にスペースはない
で、正規表現は
"(.*?(?<!\\))",?
となる。これは、以下のような例にヒットする。
"a"
"a","b","c"
"\"a","b\"","\"c\""
",a","b,",",c,"
Javaでの例は以下の通り。
Pattern pattern = Pattern.compile("\"(.*?(?<!\\\\))\",?");
Matcher matcher = pattern.matcher(CSV_STRING);
while (matcher.find()) {
System.out.println(matcher.group(1));
}