Gibt es einen regulären Ausdruck, um einen nachgestellten Schrägstrich in Perl zu entfernen?

8

Ich möchte einen nachgestellten Schrägstrich aus einer Zeichenfolge entfernen. Zum Beispiel, wenn ich eine Zeichenkette habe $ test="test /". Wie würde ich den Schrägstrich am Ende entfernen?

    
Zerobu 20.03.2010, 18:47
quelle

5 Antworten

8

Wenn Sie sicher sind, dass immer eine / am Ende ist, können Sie die Chop-Funktion verwenden:

%Vor%

Wenn Sie nicht sicher sind, was Sie tun können:

%Vor%     
codaddict 20.03.2010, 18:50
quelle
12

Mit einem regulären Ausdruck tun Sie: $test =~ s/\/$//

Wenn Sie sich sicher sind, dass das letzte Zeichen ein Schrägstrich ist, können Sie alternativ chop Funktion: chop $test

    
miorel 20.03.2010 18:49
quelle
8

Persönlich würde ich dies umformulieren, um die Mischung von "\" und "/"

zu vermeiden %Vor%

Wenn Sie "|" verwenden Sie müssen das "/"

nicht angeben     
justintime 20.03.2010 19:09
quelle
8

Sie können den Operator s/// ersetzen:

%Vor%     
Eugene Yarmash 20.03.2010 19:07
quelle
0

Dieses Snippet kümmert sich um abschließende Schrägstriche, mit Ausnahme des Stammverzeichnisses:

%Vor%

So funktioniert es:

Der erste Teil des regulären Ausdrucks - s {(. +) / \ z} - definiert eine Gruppe in den Klammern () . Dies wird durch den \ 1 im zweiten Teil des regulären Ausdrucks referenziert - {\ 1} . Innerhalb dieser Gruppe habe ich ein oder mehrere Zeichen definiert - . + - direkt gefolgt von einem Schrägstrich gefolgt vom absoluten Ende der Zeichenfolge - \ z .

Der reguläre Ausdruck speichert alles innerhalb der Klammern, um später als \ 1 in der Ersetzungsspezifikation verwendet zu werden (im Grunde der zweite Teil).

Dies funktioniert sehr ähnlich zu einer typischen sed-Strategie, nämlich:

%Vor%

Ich hoffe, dir hilft das.

    
Oliver Jones 03.02.2016 16:02
quelle

Tags und Links