val_x = { Wert X, {Wert.1, Wert.2}, Wert Y, {Wert.1, Wert.2}, Wert Z}
oder
val_y = { Wert X, nil, Wert Y, {Wert.1, Wert.2}}Ich möchte nun gerne den gesamten Inhalt zwischen der ersten öffnenden Klammer '{' und der letzten schließenden Klammer '}' matchen, wobei die Anzahl der dazwischenliegenden Klammern-Paare variabel ist.
Frage: Wie mache ich das am besten, bzw. geht das überhaupt, oder muss ich mehrere Schritte machen?
Perlansatz
my $outerpar = qr/[a-z]+/;
my $innerpar = qr/[A-Za-z\ ]+/;
my $innerval = qr/(?:nil|\([^()]+\))/;
my $string =~ m/
$outerpar
\s*
=
\s*
\(
(
$innerpar
, \s*
$innerval
(?:
, \s*
$innerpar
, \s*
$innerval
)*
)
\)
/x;
# komprimiert:
my $string =~ m/$outerpar\s*=\s*\(($innerpar,\s*$innerval(?:,\s*$innerpar,\s*$innerval)*)\)/;
Ungetestet.
Konversion nach PHP als deine eigene Übung.
mfg Beat