删除特定符号(包括它)之前的字符串中的字符

Remove characters in string before specific symbol(including it)

一开始,是的 - 此处存在类似的问题,但解决方案并不像它应该的那样工作 - 至少对我而言。

我想删除第一个分号之前的所有字符、字母和数字的任意组合,并且也将其删除。

所以我们有一些字符串:

x <- "1;ABC;GEF2"
y <- "X;EER;3DR"

让我们用 .* 这样做 gsub(),这意味着出现次数为 0 或更多的任何符号:

gsub(".*;", "", x)
gsub(".*;", "", y)

结果我得到:

[1] "GEF2"
[1] "3DR"

但我想要:

[1] "ABC;GEF2"
[1] "EER;3DR"

为什么 'catch' 第二次出现分号而不是第一次出现?

你可以使用

gsub("[^;]*;(.*)", "\1", x)
# [1] "ABC;GEF2"