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" "" ""
A expressão regular acima é desse encadeamento SO, explicando como remover todos os zeros à esquerda de uma sequência em R. Como conseqüência dessa expressão regular, "000" e "0" são transformados em "". Em vez disso, quero remover todos os zeros à esquerda de uma sequência de caracteres, exceto nos casos em que o caractere final é zero ou o único caractere é zero.
"005" would become "5"
"0AB" would become "AB"
"000" would become "0"
"0" would become "0"
Esse outro thread do SO explica como fazer o que eu quero, mas acho que não estou obtendo a sintaxe correta, aplicando a solução em R. E realmente não entendo a distinção entre a 1ª e a 2ª solução abaixo ( se eles realmente funcionaram).
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"
Qual é a regex adequada em R para obter o que eu quero?
regex
novato. Qual é a diferença de desempenho (ou outras preferências) entre seu padrão e este^0*(.+)$
ou^0+(.+)$
?