[Dresden-pm] Vorkommen eines Elementes in einem String zählen

Andreas Kunert akunert at main-rheiner.de
Mon Aug 8 06:52:20 PDT 2005


Hallo,

ich habe folgendes vor. (Sport-Tabellen)
Ein strukturierte Datei wird geliefert.
<block>
<ansetzung>
<heim>name</heim><gast>name</gast><result>ergebnis</result>
<heim>name</heim><gast>name</gast><result>ergebnis</result>
<heim>name</heim><gast>name</gast>
<heim>name</heim><gast>name</gast>
</ansetzung>
<tabelle>
<platz> ......
<tabelle>

Ich will nun in meiner DB speichern, wann ein Spieltag komplett ist, 
damit ich auf die Spieltage verweisen kann.
Ich bekomme nach jedem Spieltag eine Datei geliefert.
Beispiel:
1. Bundesliga spielt Freitag, Samstag und Sonntag = 3 Dateien

Freitags fehlen die Daten der Samstags- und Sonntagsspiele. Erst Sonntag 
sind alle da.
Sprich wenn in dem Block ansetzung alle Ergebnisse vorhanden sind, ist 
der Spieltag abgeschlossen.
Ein Verweis von einem (abgeschlossenen) Spieltag auf einen anderen 
erfolgt also nur, wenn alle Resultate vorhanden sind.

Nun die Frage. Wie kann ich mit Perl zählen, ob in dem Block ansetzung 
zu jeder Ansetzung auch ein Ergebnis vorliegt. Das Beispiel oben zeigt 
eine Datei, wie sie an einem unvollständigen Spieltag erzeugt wird. 
Leider ist die Struktur der übergebenen Datei nicht so sauber, dass ich 
zeilenweise das machen könnte.
Was ich suche ist eine Art matching, welches mir z.B. sagt, <heim> ist 9 
mal vorhanden, resultat nur 3 mal => nicht abgeschlossener Spieltag
Gibts also so eine Art Zähler, wie oft ein Matching getroffen hat?
$artikel =~ /.*?<$heim_tag.*?>(.*?)<\/$heim_tag.*?>.*?/i zählt ja 
scheinbar nicht, sondern sagt nur aus, ob ein Treffer da ist und weist 
das dann $1 zu.

Jemand eine Idee?

Danke
Gruß Andreas