如果后跟一个字符,则 REGEX 删除前导零

san*_*nna 1 regex r gsub

我正在尝试格式化 a 中的一些字符串,data.frame并且当且仅当第二个字符是字母时,我想删除前导零:

3818119 --> 3818119

0M11936 --> M11936

0X11087 --> X11087

0T05060 --> T05060

到目前为止,我已经尝试了多种方法,最后gsub("^(?=[^A-Z]{2})","" ,output$id)gsub("/^..[a-z]/","" ,output$id)但都没有成功。

Wik*_*żew 7

您可以使用

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.