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" "" ""
La expresión regular anterior es de este hilo SO que explica cómo eliminar todos los ceros a la izquierda de una cadena en R. Como consecuencia de esta expresión regular, tanto "000" como "0" se transforman en "". En cambio, quiero eliminar todos los ceros a la izquierda de una cadena de caracteres, excepto en los casos en que el carácter final sea cero o el único carácter sea cero.
"005" would become "5"
"0AB" would become "AB"
"000" would become "0"
"0" would become "0"
Este otro hilo SO explica cómo hacer lo que quiero, pero no creo que esté obteniendo la sintaxis bastante correcta, aplicando la solución en R. Y realmente no entiendo la distinción entre la primera y la segunda solución a continuación ( si de verdad funcionaran).
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"
¿Cuál es la expresión regular adecuada en R para obtener lo que quiero?
regex
novato. ¿Cuál es la diferencia de rendimiento (u otras preferencias) entre su patrón y este^0*(.+)$
o^0+(.+)$
?