Was ist in Perl der Unterschied zwischen s / ^ \ s + // und s / \ s + $ //?

8

Ich weiß, dass die folgenden drei Codezeilen darauf abzielen, die Zeichenfolge in $ value zu extrahieren und in $ header zu speichern. Aber ich weiß nicht, was die Unterschiede zwischen $value =~ s/^\s+//; und $value =~ s/\s+$//; sind.

%Vor%     
user785099 13.02.2012, 14:46
quelle

3 Antworten

10

Von perldoc perlfaq4 :

  

Wie entferne ich Leerzeichen am Anfang / Ende eines Strings?

     

Eine Substitution kann das für Sie tun. Für eine einzelne Zeile möchten Sie   Ersetzen Sie alle führenden oder nachfolgenden Leerzeichen durch nichts. Sie können   Mach das mit einem Paar Substitutionen:

%Vor%      

Sie können das auch als einzelne Ersetzung schreiben, obwohl es sich dreht   aus der kombinierten Aussage heraus ist langsamer als die getrennten. Das   ist dir vielleicht egal,

%Vor%      

In diesem regulären Ausdruck entspricht die Alternation entweder der   Anfang oder Ende der Zeichenfolge, da die Anker eine niedrigere haben   Vorrang vor dem Wechsel. Mit dem /g -Flag die Substitution   macht alle möglichen Übereinstimmungen, also beides. Erinnere dich, das Nachlaufende   newline stimmt mit dem \s+ überein, und der $ Anker kann mit dem übereinstimmen   absolutes Ende der Zeichenkette, so verschwindet auch die neue Zeile.

Und von perldoc perlrequick :

  

Um anzugeben, wo es übereinstimmen soll, würden wir den Anker verwenden   Metazeichen ^ und $ . Der Anker ^ bedeutet Übereinstimmung bei der   Anfang der Zeichenfolge und der Anker $ bedeutet Übereinstimmung am Ende von   die Zeichenfolge oder vor einem Zeilenumbruch am Ende der Zeichenfolge. Etwas   Beispiele:

%Vor%
    
Zaid 13.02.2012, 15:41
quelle
1

^ bedeutet, dass $ means mit dieser Zeichenfolge endet.

    
Mike Thomsen 13.02.2012 14:49
quelle
1

Der erste ersetzt nur Leerzeichen am Anfang der Zeile.

    
Karoly Horvath 13.02.2012 14:50
quelle

Tags und Links