Thread Regex-Muster als Variable: Dezimalpunkt ersetzen
(9 answers)
Opened by qwe123qwe at 2020-12-25 11:41
Hallo !
Über die Feiertage versuch ich ein kleines Skript zu schreiben, das mir aus einer Html-Seite ein paar Zahlen ausliest. Im Prizip mach ich das derzeit so, daß ich ein Muster definiere Code (perl): (dl
)
$muster = "(\\d{2})\\.(\\d{2})\\.(\\d{2}).+?font-size-14.+?(\\d+\\.\\d+,\\d+|\\d+\\.\\d+|\\d+,\\d+|\\d+).+?font-size-14.+?(\\d+\\.\\d+,\\d+|\\d+\\.\\d+|\\d+,\\d+|\\d+).+?font-size-14.+?(\\d+\\.\\d+,\\d+|\\d+\\.\\d+|\\d+,\\d+|\\d+).+?font-size-14.+?(\\d+\\.\\d+,\\d+|\\d+\\.\\d+|\\d+,\\d+|\\d+).+?font-size-14.right.+?(\\d+\\.\\d+\\.\\d+|\\d+\\.\\d+|\\d+).+?right...(\\d+,\\d+|\\d+).+?(M|T)"; und die Html-Seite nach dem Muster absuchen lasse Code (perl): (dl
)
while ($seite =~ /$muster/g) { das funktioniert auch soweit. Bei bestimmten Zahlen möchte ich aber nach dem Auslesen die Dezimalpunkte entfernen (bzw. bei anderen zum Weiterrechnen das Komma durch einen Punkt ersetzen). Etwas umständlich formuliert sieht das bei mir so aus: Code (perl): (dl
)
1 2 3 4 5 $daten[6] = "$8"; my $mitpunkt = $daten[6]; $mitpunkt =~ s/\.//g; $daten[6] = $mitpunkt; $daten[7] = "$9"; Ich weiß, daß das auch kürzer geschrieben werden kann, aber so kann ich das Problem besser zeigen. Mit den 3 eingerückten Zeilen bekomme ich nämlich jetzt die Fehlermeldung Code: (dl
)
Use of uninitialized value $9 in string at update-sonstige.pl line 129. Soweit ich erkennen kann, funktioniert durch die Substitution die Mustererkennung im Rest der Seite nicht mehr. Ich hab's auch schon mit einer Referenz \$daten[6] versucht, aber da bekomme ich die Fehlermeldung "reused reference" Ich hoffe, mir kann da jemand einen Tipp geben. So wie's aussieht versteht ich da nicht, wie Perl die Variableninhalte zuweist....... |