У меня возникли проблемы с анализом данных CSV с кавычками. Моя основная проблема заключается в кавычках внутри поля. В следующем примере строки 1 - 4 работают правильно, но 5,6 и 7 не работают.
COLLOQ_TYPE,COLLOQ_NAME,COLLOQ_CODE,XDATA
S,"BELT,FAN",003541547,
S,"BELT V,FAN",000324244,
S,SHROUD SPRING SCREW,000868265,
S,"D" REL VALVE ASSY,000771881,
S,"YBELT,"V"",000323030,
S,"YBELT,'V'",000322933,
Я бы хотел избежать Text:: CSV, поскольку он не установлен на целевом сервере. Понимая, что CSV сложнее, чем они выглядят, я использую рецепт из Cookbook Perl.
sub parse_csv {
my $text = shift; #record containg CSVs
my @columns = ();
push(@columns ,$+) while $text =~ m{
# The first part groups the phrase inside quotes
"([^\"\\]*(?:\\.[^\"\\]*)*)",?
| ([^,]+),?
| ,
}gx;
push(@columns ,undef) if substr($text, -1,1) eq ',';
return @columns ; # list of vars that was comma separated.
}
Есть ли у кого-нибудь предложение по улучшению регулярного выражения для обработки вышеуказанных случаев?