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

Remove all characters after the 2nd occurrence of "-" in each element of a vector

我想删除向量中每个元素中第 2 次出现“-”之后的所有字符。

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

有什么帮助吗?

根据示例输入和预期输出判断,我假设您需要删除所有以第二个连字符开头的内容。

您可以使用

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

regex demo

详情:

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

\1 (</code>) 是对捕获到组 1 中的文本的反向引用。</p> <p><a href="http://ideone.com/MPfE0T" rel="noreferrer">R demo</a>:</p> <pre><code>x <- c("aa-bbb-cccc", "aa-vvv-vv", "aa-ddd") sub("^([^-]*-[^-]*).*", "\1", x) ## => [1] "aa-bbb" "aa-vvv" "aa-ddd"