Regex删除R中的前导零,除非最后(或唯一)字符为零

问题描述 投票:0回答:1
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" ""   ""

is from this SO thread上方的正则表达式解释了如何从R中的字符串中删除前导零。由于此正则表达式,“ 000”和“ 0”均转换为“”。相反,我想从字符串中删除所有前导零,但最终字符恰好为零或唯一字符为零的情况除外。"005" would become "5" "0AB" would become "AB" "000" would become "0" "0" would become "0"

This other SO thread解释了如何做我想做的,但是我认为我在使用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中什么是正确的正则表达式才能得到我想要的?

gsub(“(?[1]” 5“” AB“”“”“ gsub(”(^ | [^ 0-9])0+“,” \\ 1“,c(” 005“,” 0AB“,” 000“,” 0“),perl = TRUE)#> [1]” 5“” AB“”“”“ The ...

r regex string gsub stringr
1个回答
0
投票
您可以使用交替方式来匹配捕获组中字符串中的所有零,也可以匹配字符串开头的所有零。

0
投票
省略前导零,除非它是单个零:
© www.soinside.com 2019 - 2024. All rights reserved.