我有一个包含逗号分隔值的多个字段的数据库。我需要在Perl中分割这些字段,除了一些值后面跟着包含在方括号中的嵌套的CSV,我不想分割它们,这足够简单。括号内的逗号分隔列表除外?
例子:
recycling, environmental science, interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics), consumer education
的分裂 “” 给我:
recycling
environmental science
interdisciplinary (e.g.
consumerism
waste management
chemistry
toxicology
government policy
and ethics)
consumer education
我要的是:
recycling
environmental science
interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics)
consumer education
任何Perl的正则表达式(perts)能伸出援助之手?
我试图修改一个正则表达式的字符串我类似的发现SO post返回任何结果:
#!/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;
你到目前为止试过了什么?请先自己努力,然后提出问题,说明你做了什么。 – 2012-02-24 18:03:42
您不能使用正则表达式来分析嵌套的表达式。你需要一个完整的解析器。 – Ether 2012-02-24 18:04:39
你可能会看看[Text :: CSV](http://search.cpan.org/perldoc?Text::CSV),看看你是否可以调整它来做你需要的。 – TLP 2012-02-24 18:13:46