Thread mal wieder regex (parsen von Datei) (13 answers)
Opened by Froschpopo at 2008-08-20 03:46

Froschpopo
 2008-08-20 03:46
#113723 #113723
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
NAME DER SCHULE
Halbachschule

Gesamtschule
STADT
Duisburg


NAME DER SCHULE
Erich-Kästner Gesamtschule
mit Förderschule
STADT
Augsburg


NAME DER SCHULE
Albert-Schweitzer-Schule

Städt. Ev. Grundschule
mit angeschlossener Musikschule
STADT
Bonn


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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
localhost:/home/frosch/scripts # perl schools.pl
1
Halbachschule

Gesamtschule
STADT
Duisburg


NAME DER SCHULE
Erich-Kästner Gesamtschule
mit Förderschule
STADT
Augsburg


NAME DER SCHULE
Albert-Schweitzer-Schule

Städt. Ev. Grundschule
mit angeschlossener Musikschule


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"

View full thread mal wieder regex (parsen von Datei)