Ich möchte einen abschließenden Schrägstrich aus einer Zeichenfolge entfernen. Zum Beispiel, wenn ich eine Zeichenfolge namens $ test = "test /" habe. Wie würde ich den Schrägstrich am Ende entfernen?Gibt es einen regulären Ausdruck, um einen nachgestellten Schrägstrich in Perl zu entfernen?
Antwort
Wenn Sie sicher sind, dass es ist ein/am Ende die ganze Zeit Sie die Chop-Funktion verwenden können:
$test = "test/";
$test = chop($test);
Wenn Sie nicht sicher sind, können Sie tun:
$test = "test/";
$test = $1 if($test=~/(.*)\/$/);
Mit einem regulären Ausdruck zu tun: $test =~ s/\/$//
Alternativ, wenn Sie das letzte Zeichen sind sicher, dass ein Schrägstrich sein wird, können Sie die chop Funktion: chop $test
Ich würde '$ test = ~ s [/ $] []' für die Lesbarkeit schreiben. – Quentin
Verwenden Sie den Anker \ z, um das absolute Ende der Zeichenfolge zu erhalten. –
Sorry für die Mühe, aber es scheint, dass diese Regex funktioniert für alle Verzeichnisse, * außer * bei der Verwendung von 'Stammverzeichnis' * ->/<-.Es wird einfach den Root-Pfad entfernen, der in einigen Fällen nicht so gut ist, weil er mit einem nachgestellten Schrägstrich beginnt (Paradoxon?). ;-) – Semo
können Sie die s///
Substitution Operator:
$test =~ s{/\z}{};
Großartige Gedanken sind gleich ... – justintime
Verwenden Sie den \ z-Anker, um das absolute Ende der Zeichenfolge zu erhalten. –
Persönlich würde ich das anders formulieren die Mischung aus "\" und "/"
$test =~ s|/$||
zu vermeiden Wenn Sie "|" Sie brauchen nicht die „/“
Verwenden Sie den Anker \ z, um das absolute Ende der Zeichenfolge zu erhalten. –
Dieser Ausschnitt kümmert sich um folgende Schrägstriche zu zitieren, mit Ausnahme des Stammverzeichnis:
#!/usr/bin/perl
my $test = './';
$test =~ s{(.+)/\z}{\1};
print $test."\n";
Hier ist, wie es funktioniert:
Der erste Teil des regulären Ausdrucks - s {(. +)/\ Z} - definiert eine Gruppe in den Klammern (). Dies wird durch die \ 1 im zweiten Teil des regulären Ausdrucks - {\ 1}. Innerhalb dieser Gruppe habe ich ein oder mehrere Zeichen definiert - . + - gefolgt von einem Schrägstrich gefolgt von dem absoluten Ende der Zeichenfolge - \ z.
Der reguläre Ausdruck speichert alles in den Klammern, die später als \ 1 in der Ersatz-Spezifikation verwendet werden
Dies zu einer typischen sed Strategie sehr ähnlich arbeitet, nämlich (den zweiten Teil, im Grunde.):
echo "./" | sed -e 's:\(..*\)/$:\1:'
ich hoffe, das Ihnen von Hilfe ist.
Schön, einen zu sehen, der das reale Problem des Wurzelverzeichnisses anspricht. Zwei weitere Ideen: 1) Ich glaube, dass die empfohlene Art der Ersetzungen in der Ersetzung ist mit "$" und nicht "\", obwohl beide arbeiten. 2) Es kann effizienter sein, nur das Zeichen kurz vor dem nachgestellten/anstelle von möglicherweise sehr, sehr vielen Zeichen zu erfassen. Mit diesen beiden Änderungen würde ich es machen: 's {(.)/\ Z} {$ 1}' –
- 1. Gibt es in Perl einen regulären Ausdruck, um die Dateierweiterung zu finden?
- 2. nachgestellten Schrägstrich
- 3. Wie kommentieren Sie einen regulären Perl-Ausdruck?
- 4. brauchen regulären Ausdruck, um Klammern zu entfernen
- 5. Konvertiere einen String in einen regulären Ausdruck
- 6. Wie kann ich einen globalen regulären Ausdruck in Perl erstellen?
- 7. InetAddress.toString() gibt einen Schrägstrich zurück
- 8. Ist es möglich, einen regulären Ausdruck in Übereinstimmung zu bringen?
- 9. Gibt es ein Idiom, um einem Dateipfad einen Schrägstrich hinzuzufügen?
- 10. regulärer Ausdruck "enthält" einen anderen regulären Ausdruck
- 11. Postgresql Abfragefelder zu aktualisieren, um einen regulären Ausdruck
- 12. zu erzwingen nachgestellten Schrägstrich Rewrite .htaccess
- 13. Wie verwendet man regulären Ausdruck, um einen Teilzeichenfolgewert zu ersetzen?
- 14. Gibt es einen tragbaren Perl?
- 15. Ich brauche einen regulären Ausdruck, um MailChimp-Tags zu erkennen
- 16. wie einen regulären Ausdruck schreiben
- 17. Hilfe für einen regulären Ausdruck
- 18. Erstellen Sie einen regulären Ausdruck, um ungültige Zeichenmuster in PHP zu entfernen
- 19. finden Sie einen regulären Ausdruck, um Buchstaben, chinesische Zeichen und Schrägstrich (/)
- 20. Benötigen Sie einen regulären Ausdruck, um Zeichenfolge in JavaScript
- 21. Verwenden von regulären Ausdruck, um unnötige XML-Tags zu entfernen
- 22. JavaScript: Wie verwende ich einen regulären Ausdruck, um leere Zeilen aus einer Zeichenfolge zu entfernen?
- 23. Wie man einen regulären Ausdruck mit einem Schrägstrich in Javascript beenden
- 24. Wie verwende ich einen regulären Ausdruck, um Zeilenumbrüche hinzuzufügen?
- 25. Gibt es einen WYSIWYG Perl Pod Editor?
- 26. einen Teilstring mit einem regulären Ausdruck Passende
- 27. Welchen Code würde ich verwenden, um einen SQL-ähnlichen Ausdruck zu einem regulären Ausdruck zu konvertieren?
- 28. Regex zum Entfernen von nachgestellten Nullen
- 29. Entpacken Sie einen regulären Ausdruck Übereinstimmung
- 30. Wie validiere ich einen regulären Ausdruck?
Haben Sie die Dokumentation * überhaupt gelesen? z.B. http://perldoc.perl.org/perreftut.html? – Ether