可以使用正则表达式的负向前瞻(negative lookahead)来实现这个需求。具体的正则表达式如下: ```R x <- c("001", "010", "100", "2000", "30000", "400000") # 去除前导零,除非最后一个(或唯一的)字符是零 x <- gsub("^0+(?!0$)", "", x, perl = TRUE) print(x) ``` 输出结果为: ``` [1] "1" "10" "100" "2000" "30000" "400000" ``` 解释一下正则表达式的含义: - `^0+`:匹配以一个或多个零开头的字符串。 - `(?!0$)`:负向前瞻,表示后面不能跟着一个零(即最后一个字符不能是零)。 - `gsub()` 函数用于替换匹配的字符串为空字符串。 这样就可以实现去除前导零,除非最后一个(或唯一的)字符是零的功能。