Thread mal wieder regex (parsen von Datei)
(13 answers)
Opened by Froschpopo at 2008-08-20 03:46
schonwieder so ein blödes regex-kuddelmuddel der mir seit stunden Nerven kosten:
Habe eine Datei mit Schulen die etwas merkwürdig konstruiert ist (nicht von mir) Code: (dl
)
1 NAME DER SCHULE Grundsätzlich muss man wissen: Der Name der Schule ist immer die nächste Zeile nach "NAME DER SCHULE". Danach folgt irgendein Text der die Schule beschreibt oder sonstige Infos zu der Schule enthält. Dieser Text hat oft mehrere Zeilen. Mein Ansatz war folgender: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/usr/bin/perl use strict; chdir("/srv/www/projekt/schulen") || die "Fehler: $!\n"; local(*FH, $/); open FH, "test.txt" || die "Fehler: $!\n"; my $file = <FH>; my @rows = $file =~ /NAME DER SCHULE([a-zA-Z_0-9\s\-\n\r\.üöäß]+)STADT/g; my $counter = 0; for (@rows) { $counter++; print "$counter\t$_\n"; } Das gibt mir folgendes Ergebnis: Code: (dl
)
1 localhost:/home/frosch/scripts # perl schools.pl Warum findet er nur einen Treffer???? In der for-Schleife will ich jeweils die Infos zu der Schule haben, also alles zwischen "NAME DER SCHULE" und "STADT" |