在 R 中最后一次出现模式后删除字符串中的所有字符

Remove all characters in a string after the last ocurrence of a pattern in R

我想在 R 中删除字符串中最后一次出现特定模式之后的所有字符。

例如:

string = "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge regthyty "

我想删除最后一次出现模式 "ge" 之后的所有内容,最后得到:

"asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge".

您可以在此处使用否定前瞻:

string <- "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge regthyty "
output <- sub("\bge (?!.*\bge\b).*", "ge", string, perl=TRUE)
output

[1] "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge"

您可以使用捕获组来捕获最后一个“ge”之前的所有字符串 (^(.*ge)),然后用该捕获组 (\1) 替换整个字符串。

sub('^(.*ge).+$', '\1', string)
[1] "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge"