区切り文字を含むことができるいくつかの保護された値と区切られた値を一致させるための正規表現が必要です。
例えば:
"A,B,{C,D,E},F"
与えるでしょう:
- 「あ」
- "B"
- "{C,D,E}"
- 「フ」
次のように、保護された値をネストできることに注意してください。
"A,B,{C,D,{E,F}},G"
与えるでしょう:
- 「あ」
- "B"
- "{C,D,{E,F}}"
- 「グ」
次のように、文字の反復を使用してその機能を既にコーディングしています。
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;
}
しかし、正規表現を使用すると、間違いなくはるかに優れたものになります。