在向量的每个元素中第3次出现“ - ”后删除所有字符

时间:2017-01-12 20:24:50

标签: r regex gsub

我对R中的正则表达式不太好。我想在向量的每个元素中第3次出现“ - ”后删除所有字符。

 Initial string  
 aa-bbb-cccc    =>    aa-bbb
 aa-vvv-vv      =>    aa-vvv
 aa-ddd         =>    aa-ddd

任何帮助?

1 个答案:

答案 0 :(得分:4)

根据样本输入和预期输出判断,我假设您需要从第二个连字符开始删除所有内容。

您可以使用

sub("^([^-]*-[^-]*).*", "\\1", x)

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • ([^-]*-[^-]*) - 第1组捕获0 {+ 1}以外的0 +字符,-以及-以外的0 +字符
  • - - 任何0+字符(在这样的TRE正则表达式中,点也与换行符匹配。)

.*\\1)是对第1组中捕获的文本的反向引用。

R demo

\1