删除R中字符串中大写字母的第一个实例之前的字符

car*_*imm 5 regex substring r uppercase

我试图为字符串向量中的每个字符串删除大写字母的第一个实例之前的所有字符:

x <- c(" its client Auto Group",  "itself and Phone Company", ", client Large Bank")
Run Code Online (Sandbox Code Playgroud)

我试过了:

sub('.*?[A-Z]', '', x) 
Run Code Online (Sandbox Code Playgroud)

但这返回:

"uto Group"  "hone Company"   "arge Bank"
Run Code Online (Sandbox Code Playgroud)

我需要它返回:

"Auto Group"    "Phone Company" "Large Bank"
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢。

Wik*_*żew 5

您需要使用具有反向引用的捕获组:

sub("^.*?([A-Z])", "\\1", x)
Run Code Online (Sandbox Code Playgroud)

这里,

  • ^ -字符串的开头
  • .*? -尽可能少的0个字符
  • ([A-Z])-捕获组1捕获将\1在替换模式中引用的大写ASCII字母。

因此,我们使用后向引用恢复了在结果中捕获的内容。