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" "" ""
Ekspresi reguler di atas berasal dari utas SO ini yang menjelaskan cara menghapus semua nol di awal dari string dalam R. Sebagai konsekuensi dari ekspresi reguler ini, "000" dan "0" ditransformasikan menjadi "". Alih-alih, saya ingin menghapus semua nol di awal dari serangkaian karakter, kecuali untuk kasus-kasus ketika karakter akhir menjadi nol, atau satu-satunya karakter adalah nol.
"005" would become "5"
"0AB" would become "AB"
"000" would become "0"
"0" would become "0"
Utas SO lainnya ini menjelaskan cara melakukan apa yang saya inginkan, tetapi saya rasa saya tidak mendapatkan sintaks yang benar, menerapkan solusi dalam R. Dan saya tidak terlalu memahami perbedaan antara solusi 1 dan 2 di bawah ini ( jika mereka memang bekerja).
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"
Apa regex yang tepat dalam R untuk mendapatkan apa yang saya inginkan?
regex
cupu. Apa perbedaan kinerja (atau preferensi lain) antara pola Anda dan ini^0*(.+)$
atau itu^0+(.+)$
?