我正在尝试格式化 a 中的一些字符串,data.frame并且当且仅当第二个字符是字母时,我想删除前导零:
3818119 --> 3818119
0M11936 --> M11936
0X11087 --> X11087
0T05060 --> T05060
到目前为止,我已经尝试了多种方法,最后gsub("^(?=[^A-Z]{2})","" ,output$id)和gsub("/^..[a-z]/","" ,output$id)但都没有成功。
您可以使用
sub("^0([[:alpha:]])", "\\1" ,output$id)
Run Code Online (Sandbox Code Playgroud)
模式匹配
^ - 字符串的开始0 - 一个零([[:alpha:]])- 第 1 组 ( \1):一封信如果您只想考虑大写 ASCII 字母,请使用
sub("^0([A-Z])", "\\1" ,output$id)
Run Code Online (Sandbox Code Playgroud)
您尝试编写的环视版本需要启用以下功能的 PCRE 引擎perl=TRUE:
sub("^0(?=[A-Z])", "", output$id, perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
R演示:
x <- c("3818119", "0M11936", "0X11087", "0T05060")
sub("^0([[:alpha:]])", "\\1", x)
sub("^0([A-Z])", "\\1", x)
sub("^0(?=[A-Z])", "", x, perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
注意如果0开头有多个字符,请+在0.