Mam bazę danych z wieloma polami zawierającymi wartości rozdzielone przecinkami. Muszę podzielić te pola w Perlu, co jest dość proste, z wyjątkiem tego, że po niektórych wartościach występują zagnieżdżone pliki CSV zawarte w nawiasach, których nie chcę dzielić.Lista podzielona na Perla na przecinki, z wyjątkiem w nawiasie?
Przykład:
recycling, environmental science, interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics), consumer education
Podział na "" daje mi:
recycling
environmental science
interdisciplinary (e.g.
consumerism
waste management
chemistry
toxicology
government policy
and ethics)
consumer education
co chcę:
recycling
environmental science
interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics)
consumer education
Czy każdy Perl regex (perts) pomagać ?
Próbowałem modyfikowanie regex ciąg znalazłem w podobny SO post która zwraca żadnych wyników:
#!/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;
Co próbowałeś do tej pory? Najpierw staraj się samodzielnie, a następnie zadawaj pytania pokazujące, co zrobiłeś. –
Nie można użyć wyrażenia regularnego do analizowania zagnieżdżonych wyrażeń. Potrzebujesz pełnoprawnego parsera. – Ether
Możesz rzucić okiem na [Tekst :: CSV] (http://search.cpan.org/perldoc?Text::CSV) i sprawdzić, czy możesz go ulepszyć, aby zrobić to, czego potrzebujesz. – TLP