gpt4 book ai didi

perl - 以逗号分隔,但仅当不在括号中时

转载 作者:行者123 更新时间:2023-12-04 14:34:38 26 4
gpt4 key购买 nike

我正在尝试使用逗号分隔符对字符串进行拆分

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/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com