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"
Цей інший потік пояснює, як робити те, що я хочу, але я не думаю, що я отримую синтаксис цілком правильним, застосовуючи рішення в R. якщо вони справді працювали).
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+(.+)$
?