我正在尝试使用逗号分隔符对字符串进行拆分
my $string='ab,12,20100401,xyz(A,B)';
my @array=split(',',$string);
如果我像上面那样进行拆分,数组将有值
ab
12
20100401
xyz(A,
B)
我需要如下值。
ab
12
20100401
xyz(A,B)
(不应将 xyz(A,B) 拆分为 2 个值)
我怎么做?
最佳答案
use Text::Balanced qw(extract_bracketed);
my $string = "ab,12,20100401,xyz(A,B(a,d))";
my @params = ();
while ($string) {
if ($string =~ /^([^(]*?),/) {
push @params, $1;
$string =~ s/^\Q$1\E\s*,?\s*//;
} else {
my ($ext, $pre);
($ext, $string, $pre) = extract_bracketed($string,'()','[^()]+');
push @params, "$pre$ext";
$string =~ s/^\s*,\s*//;
}
}
这个支持:
关于perl - 以逗号分隔,但仅当不在括号中时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5049358/