除了在括号内,Perl在逗号上拆分列表?

cal*_*ung 8 regex perl

我有一个包含逗号分隔值的字段的数据库.我需要在Perl中拆分这些字段,这很简单,除了一些值后面跟着包含在括号中的嵌套CSV,我不想拆分.

例:

recycling, environmental science, interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics), consumer education
Run Code Online (Sandbox Code Playgroud)

拆分","给了我:

recycling
environmental science
interdisciplinary (e.g.
consumerism
waste management
chemistry
toxicology
government policy
and ethics)
consumer education
Run Code Online (Sandbox Code Playgroud)

我想要的是:

recycling
environmental science
interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics)
consumer education
Run Code Online (Sandbox Code Playgroud)

任何Perl正则表达式(perts)能伸出援助之手吗?

我已经尝试修改我在类似SO 帖子中找到的正则表达式字符串,该字符串不返回任何结果:

#!/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;
Run Code Online (Sandbox Code Playgroud)

rai*_*7ow 9

试试这个:

my $s = q{recycling, environmental science, interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics), consumer education};

my @parts = split /(?![^(]+\)), /, $s;
Run Code Online (Sandbox Code Playgroud)