Ist diese Linie von Perl bedeutungslos? s / ^ (\ d +) \ b / $ 1 / sg

8

Macht diese Perl-Linie wirklich etwas?

%Vor%

Das einzige, was mir einfällt, ist, dass oder $& wiederverwendet werden kann, aber unmittelbar darauf folgt.

%Vor%

Mit diesen beiden Zeilen zusammen, ist die erste Zeile bedeutungslos und entfernbar? Es scheint so, als wäre es das, aber ich habe es schon öfters in diesem alten Programm gesehen und wollte es sicher machen.

    
George Bailey 08.02.2012, 15:28
quelle

2 Antworten

12
%Vor%
  • Der Anker ^ am Anfang macht den Modifikator /g unbrauchbar.
  • Das Fehlen des Platzhalterzeichens . in der Zeichenfolge macht den% modifier /s unbrauchbar, da er dazu dient, dass . auch mit newline übereinstimmt.
  • Da \b und ^ Assertionen mit der Breite null und die einzigen Dinge außerhalb der Erfassungsgruppe sind, wird diese Substitution die Variable überhaupt nicht ändern.

Das einzige, was diese Regex macht, ist die Erfassung der Ziffern in , wenn sie gefunden werden.

Die nachfolgende Regex

%Vor%

Entfernt alle Nicht-Ziffern, wodurch die Variable nur eine lange Zahl enthält. Wenn man den ersten Teil (der durch den ersten Regex abgeglichen wird) trennen möchte, wäre der einzige Weg dies zu tun, indem man auf von der ersten Regex zugreift.

Allerdings wäre die erste Regex in diesem Fall besser einfach geschrieben:

%Vor%

Und wenn das Capture verwendet werden soll:

%Vor%     
TLP 08.02.2012, 15:46
quelle
6

Wird "Taint-Modus" verwendet? (Skript wird mit der Option -T aufgerufen.)

Vielleicht wird es verwendet, um Benutzereingaben zu bereinigen (d. h. untauglich).

    
Mikel 08.02.2012 16:01
quelle

Tags und Links