Thread Regex-Muster als Variable: Dezimalpunkt ersetzen (9 answers)
Opened by qwe123qwe at 2020-12-25 11:41

haj
 2020-12-25 15:02
#193034 #193034
User since
2015-01-07
558 Artikel
BenutzerIn

user image
2020-12-25T10:41:15 qwe123qwe
Soweit ich erkennen kann, funktioniert durch die Substitution die Mustererkennung im Rest der Seite nicht mehr.

Richtig! Das liegt daran, dass die Substitution ihre eigenen Trefferlisten haben könnte (die hier nicht verwendet werden) und Perl deshalb Trefferlisten aus vorherigen Regex-Auswertungen eliminiert. Es gibt kein $9 in s/\.//g.

Die einfachste Abhilfe ist, die Treffer aus der Regex (die Du wesentlich lesbarer schreiben könntest, aber darum geht's hier nicht) in einer eigenen Variable zu bunkern, dann ist sie sicher:

Code (perl): (dl )
1
2
3
while (my @digits = $seite =~ /$muster/g) {
   # In diesem while-Block sollte $seite gekürzt werden, sonst
   # riecht das nach Endlosschleife
...und dann, später:
Code (perl): (dl )
1
2
3
4
5
$daten[6] = $digits[7];
my $mitpunkt = $daten[6];
$mitpunkt =~ s/\.//g;
$daten[6] = $mitpunkt;
$daten[7] = $digits[8];

View full thread Regex-Muster als Variable: Dezimalpunkt ersetzen