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" "" ""
Biểu thức chính quy ở trên là từ luồng SO này giải thích cách loại bỏ tất cả các số 0 đứng đầu khỏi một chuỗi trong R. Do đó, biểu thức chính quy này cả "000" và "0" được chuyển thành "". Thay vào đó, tôi muốn xóa tất cả các số 0 đứng đầu khỏi một chuỗi các ký tự, ngoại trừ các trường hợp khi ký tự cuối cùng bằng 0 hoặc ký tự duy nhất bằng 0.
"005" would become "5"
"0AB" would become "AB"
"000" would become "0"
"0" would become "0"
Chủ đề SO khác này giải thích cách thực hiện những gì tôi muốn, nhưng tôi không nghĩ rằng tôi đang nhận được cú pháp khá chính xác, áp dụng giải pháp trong R. Và tôi không thực sự hiểu sự khác biệt giữa giải pháp 1 và 2 bên dưới ( nếu họ thực sự làm việc).
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"
Regex thích hợp trong R để có được những gì tôi muốn là gì?
regex
gà mờ. Sự khác biệt hiệu suất (hoặc các ưu đãi khác) giữa mô hình của bạn và điều này là gì^0*(.+)$
hay^0+(.+)$
?