管道和引号的Perl或python正则表达式拆分

Mut*_*ant 1 regex perl split pipe

我想在字符串下解析 -

输入: "1"|"abc xyz"||"a|25|30"|2345

输出:

"1"
"abc xyz"

"a|25|30"
2345
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

hob*_*bbs 5

#!perl
use strict;
use warnings;
use Text::CSV;

my $in = q{"1"|"abc xyz"||"a|25|30"|2345};
my $csv = Text::CSV->new({ sep_char => '|', quote_char => '"' });
$csv->parse($in);
print $_, "\n" for $csv->fields;
Run Code Online (Sandbox Code Playgroud)

输出:

1
abc xyz

a|25|30
2345
Run Code Online (Sandbox Code Playgroud)