如何使用Perl在数据中使用内部逗号解析CSV数据?

Hai*_*ang 1 regex perl

我需要解析的数据如下:

[fild1, filed2, .... filedn] , [filed1, filed2, .... filedn] .....
Run Code Online (Sandbox Code Playgroud)

我称之为CSV数据的一种特殊形式,因为有两种逗号:

  1. []对之外的那些逗号用作不同记录之间的分隔符.
  2. []对中的逗号用作不同字段之间的分隔符.

因此,在这种情况下,使用split(',' , $data)将无法满足我的需求,即解析数据并获取数据中的每条记录.

cat*_*alk 5

这应该做的工作:

my @out = map{[split/,/]} $data =~ /\[([^\]]+)\]/g;
Run Code Online (Sandbox Code Playgroud)

例:

use Data::Dumper;
$data='[1,2,3],[4,5],[6]';
@a=map{[split/,/]} $data =~ /\[([^\]]+)\]/g;
print Dumper @a;
Run Code Online (Sandbox Code Playgroud)

输出:

$VAR1 = [
          '1',
          '2',
          '3'
        ];
$VAR2 = [
          '4',
          '5'
        ];
$VAR3 = [
          '6'
        ];
Run Code Online (Sandbox Code Playgroud)