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" "" ""
L'expression régulière ci - dessus provient de ce thread SO expliquant comment supprimer tous les zéros de tête d'une chaîne dans R. En conséquence de cette expression régulière, "000" et "0" sont transformés en "". Au lieu de cela, je veux supprimer tous les zéros de tête d'une chaîne de caractères, sauf dans les cas où le caractère final se trouve être zéro ou le seul caractère est zéro.
"005" would become "5"
"0AB" would become "AB"
"000" would become "0"
"0" would become "0"
Cet autre thread SO explique comment faire ce que je veux, mais je ne pense pas que je reçois la syntaxe tout à fait correcte, en appliquant la solution dans R. Et je ne comprends pas vraiment la distinction entre la 1ère et la 2ème solution ci-dessous ( s'ils fonctionnaient bien).
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"
Quelle est l'expression rationnelle appropriée dans R pour obtenir ce que je veux?
regex
Noob. Quelle est la différence de performances (ou d'autres préférences) entre votre modèle et celui-ci^0*(.+)$
ou^0+(.+)$
?