Ich versuche, Daten aus einer Liste zu identifizieren, der Code ist:
my $listdata = '
Listeneinträge:
(1)LIST 1 Daten
(a)Unterdaten
(b)Unterdaten
(c)Unterdaten
(d)Unterdaten
(i)Unter-Unterdaten
(ii)Unter-Unterdaten
(A)Unter-Unter-Unterdaten
(B)Unter-Unter-Unterdaten
(iii)Unter-Unterdaten
(e)Unterdaten
(2)LIST 2 Daten
(3)LIST 3 Daten
';
#print "\n\n\n$listdata\n\n";
###Array von mehrstufigen Mustern
my @level_check =('\(\d+\)','(?is Ist: $first_level\n";
}
}
for($i=0; $i>$2$3};
#print"**$data level matched: $leveltemp => $first_level\n";
############Erste Stufe Beenden
}
else
{
######Zweite Stufe Start
if($leveltemp !~ /^(?:<>|\d{3,}\,?|\([a-h]{3,})/i){
$second_occur = $leveltemp if !$second_occur;
#print "$leveltemp :$second_occur\n";
for($i=0; $iis IInd: $second_level\n";
}
}
if($leveltemp =~ /^$second_level/){
$leveltemp =~ s{$pattern}{<>$2$3};
#print"**level matched: $leveltemp => $seconf_level\n";
######Zweite Stufe End
}
else
{
########Dritte Stufe Start
if($leveltemp !~ /^(?:<>|\d{3,}\,?|\([A-h]{3,})/i){
$third_occur = $leveltemp if !$third_occur;
for($i=0; $iis IIIrd: $third_level\n";
}
}
if($leveltemp =~ /^$third_level/){
$leveltemp =~ s{$pattern}{<>$2$3};
#print"**level matched: $leveltemp => $third_level\n";
#########Dritte Stufe Ende
}
else
{
########Vierte Stufe Start
if($leveltemp !~ /^(?:<>|\d{3,}\,?|\([A-z]{3,})/i){
$fourth_occur = $leveltemp if !$fourth_occur;
#print "$leveltemp :$fourth_occur\n";
for($i=0; $iis IVrth: $fourth_level\n";
}
}
if($leveltemp =~ /^$fourth_level/){
$leveltemp =~ s{$pattern}{<>$2$3};
#print"**$fourth_occur level matched: $leveltemp => $fourth_level\n";
#########Vierte Stufe Ende
}
#######Nächste Stufen hier hinzufügen, falls vorhanden, im else-Loop
}
}#IV lvl else loop end
}
}#III lvl else loop end
}
}#IInd lvl else loop end
}#Ist lvl for loop end
"$leveltemp"
}gsixe;
print "$listdata\n";
Das erforderliche Ergebnis:
<>(1)LIST 1 Daten
<>(a)Unterdaten
<>(b)Unterdaten
<>(c)Unterdaten
<>(d)Unterdaten
<>(i)Unter-Unterdaten
<>(ii)Unter-Unterdaten
<>(A)Unter-Unter-Unterdaten
<>(B)Unter-Unter-Unterdaten
<>(iii)Unter-Unterdaten
<>(e)Unterdaten
<>(2)LIST 2 Daten
<>(3)LIST 3 Daten
Das Problem ist, dass ich für jede Stufe Code eingeben muss. Ich habe hier bis zu vier Stufen codiert. Aber das ist keine Lösung (Die Liste kann beliebig viele Unterstufen haben). Gibt es einen anderen Weg, um einen kurzen Code dafür zu schreiben, der alle möglichen Unterstufen der Liste abdeckt? Nochmal, die Liste ist dynamisch. Die Liste kann in einem der folgenden Formate starten: A) (A) 1. 1) (1) a) (a) i) (i).