Tengo una base de datos con varios campos que contienen valores separados por comas. Necesito dividir estos campos en Perl, lo cual es bastante sencillo, excepto que algunos de los valores son seguidos por CSV anidados contenidos entre corchetes que no quiero dividir.¿Lista dividida de Perl en comas, excepto cuando está entre corchetes?
Ejemplo:
recycling
environmental science
interdisciplinary (e.g.
consumerism
waste management
chemistry
toxicology
government policy
and ethics)
consumer education
Lo que quiero es::
recycling
environmental science
interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics)
consumer education
Puede alguno de expresiones regulares de Perl (pertos) echar una mano
recycling, environmental science, interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics), consumer education
que parte en "" me da ?
He intentado modificar una expresión regular que encontré en una situación similar SO post cuales no devolvió resultados:
#!/usr/bin/perl
use strict;
use warnings;
my $s = q{recycling, environmental science, interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics), consumer education};
my @parts = $s =~ m{\A(\w+) ([0-9]) (\([^\(]+\)) (\w+) ([0-9]) ([0-9]{2})};
use Data::Dumper;
print Dumper \@parts;
¿Qué ha intentado hasta ahora? Primero haga un esfuerzo por su cuenta y luego haga preguntas que muestren lo que ha hecho. –
No puede usar una expresión regular para analizar expresiones anidadas. Necesitas un analizador completo. – Ether
Puede echar un vistazo a [Text :: CSV] (http://search.cpan.org/perldoc?Text::CSV) y ver si puede ajustarlo para hacer lo que necesita. – TLP