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" "" ""
Приведенное выше регулярное выражение взято из этого потока SO, объясняющего, как удалить все начальные нули из строки в R. В результате этого регулярного выражения и «000», и «0» преобразуются в «». Вместо этого я хочу удалить все начальные нули из строки символов, за исключением случаев, когда последний символ равен нулю или единственный символ равен нулю.
"005" would become "5"
"0AB" would become "AB"
"000" would become "0"
"0" would become "0"
Этот другой поток SO объясняет, как делать то, что я хочу, но я не думаю, что я получаю синтаксис достаточно правильно, применяя решение в R. И я не очень понимаю различие между 1-м и 2-м решениями ниже ( если они действительно работали).
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"
Что такое правильное регулярное выражение в R, чтобы получить то, что я хочу?
regex
новичек. Что разница в производительности (или другие предпочтения) между рисунком и этим^0*(.+)$
или^0+(.+)$
?