gsub("(?<![0-9])0+", "", c("005", "0AB", "000", "0"), perl = TRUE)
#> [1] "5" "AB" "" ""
gsub("(^|[^0-9])0+", "\\1", c("005", "0AB", "000", "0"), perl = TRUE)
#> [1] "5" "AB" "" ""
Der obige reguläre Ausdruck stammt aus diesem SO-Thread und erklärt, wie alle führenden Nullen aus einer Zeichenfolge in R entfernt werden. Infolge dieses regulären Ausdrucks werden sowohl "000" als auch "0" in "" transformiert. Stattdessen möchte ich alle führenden Nullen aus einer Zeichenfolge entfernen, mit Ausnahme der Fälle, in denen das letzte Zeichen zufällig Null ist oder das einzige Zeichen Null ist.
"005" would become "5"
"0AB" would become "AB"
"000" would become "0"
"0" would become "0"
Dieser andere SO-Thread erklärt, wie man macht, was ich will, aber ich glaube nicht, dass ich die Syntax ganz richtig verstehe, wenn ich die Lösung in R anwende. Und ich verstehe den Unterschied zwischen der 1. und 2. Lösung unten nicht wirklich ( wenn sie tatsächlich funktionierten).
gsub("s/^0*(\d+)$/$1/;", "", c("005", "0AB", "000", "0"), perl = TRUE) # 1st solution
# Error: '\d' is an unrecognized escape in character string starting ""s/^0*(\d"
gsub("s/0*(\d+)/$1/;", "", c("005", "0AB", "000", "0"), perl = TRUE) # 2nd solution
# Error: '\d' is an unrecognized escape in character string starting ""s/0*(\d"
Was ist der richtige reguläre Ausdruck in R, um das zu bekommen, was ich will?
regex
Anfänger. Was ist der Leistungsunterschied (oder andere Einstellungen) zwischen Ihrem Muster und diesem^0*(.+)$
oder^0+(.+)$
?