我正在尝试删除字符串向量中每个字符串的大写字母的第一个实例之前的所有字符:
x <- c(" its client Auto Group", "itself and Phone Company", ", client Large Bank")
我试过了:
sub('.*?[A-Z]', '', x)
但是回归:
"uto Group" "hone Company" "arge Bank"
我需要它返回:
"Auto Group" "Phone Company" "Large Bank"
有什么想法吗?
感谢。
答案 0 :(得分:5)
您需要使用具有反向引用的捕获组:
sub("^.*?([A-Z])", "\\1", x)
在这里,
^
- 字符串的开头.*?
- 尽可能少的0个字符([A-Z])
- 捕获第1组,捕获将在替换模式中使用\1
引用的大写ASCII字母。那么,我们通过反向引用来恢复结果中捕获的内容。