Mein Zeitstempel ist in der Form
%Vor%Ich muss die führenden Nullen entfernen, um dieses Formular zu erhalten:
%Vor%Hier ist der Code, den ich jetzt verwende, der führende Nullen nicht entfernt:
%Vor%Für Situationen wie unten könnte es sein:
%Vor% Hier ist die Idee, look behind
(?<=^| )0+
mit 0
s
wenn es entweder am Anfang der Zeichenfolge auftritt
(?<=^
oder |
wenn es nach einem Leerzeichen )0+
und ersetzen Sie die übereinstimmenden 0s
by ""
im zweiten Teil des Arguments gsub
.
In der zweiten Zeichenfolge sind hour
und minutes
alle 0's
. Also würde die Verwendung des ersten code
zu folgendem führen:
Hier ist unklar, was das OP als Ergebnis akzeptieren würde. Also, ich dachte, anstatt das ganze 0
s vor dem :
zu entfernen, wäre es besser, wenn ein 0
übrig wäre. Also habe ich den multiplen Code 0+
auf nur einen 0
ersetzt und ersetze ihn durch ""
.
Der einfachste Weg besteht darin, eine eigene Grenze zu erstellen, die entweder den Beginn der Zeichenkette oder ein vorangestelltes Leerzeichen bestätigt.
%Vor% Sie könnten dasselbe machen, indem Sie den Ersatz mit einem Trick ausschließen. \K
setzt den Startpunkt der gemeldeten Übereinstimmung zurück und alle zuvor verbrauchten Zeichen sind nicht mehr enthalten.
Oder Sie könnten sub
verwenden und bis zum zweiten Satz führender Nullen passen.
Und um alle Möglichkeiten abzudecken, wenn Sie wissen, dass Sie jemals ein Format wie 0992006 00:00
haben werden, entfernen Sie einfach den +
Quantifizierer von null im regulären Ausdruck, so dass nur die erste führende Null entfernt wird.
Sie können stringr
auch ohne regulären Ausdruck verwenden, indem Sie die Teilzeichenfolgen verwenden.