我想要一个正则表达式来匹配分隔值和一些可以包含分隔符的受保护值。
例如:
"A,B,{C,D,E},F"
会给:
- “一种”
- “乙”
- “{C,D,E}”
- “F”
请注意,受保护的值可以嵌套,如下所示:
"A,B,{C,D,{E,F}},G"
会给:
- “一种”
- “乙”
- “{C,D,{E,F}}”
- “G”
我已经使用字符迭代对该功能进行了编码,如下所示:
sub Parse
{
my @item;
my $curly;
my $string;
foreach(split //)
{
$_ eq "{" and ++$curly;
$_ eq "}" and --$curly;
if(!$curly && /[,:]/)
{
push @item, $string;
undef $string;
next;
}
$string .= $_;
}
push @item, $string;
return @item;
}
但是使用正则表达式肯定会更好。