如何删除最后一个特定符号之前的字符串

时间:2018-12-04 12:31:59

标签: r regex

说我有一个这样的字符串

foo10.png

我该如何清洁它,以便仅保留“保持”状态。此外,如何将其应用于整个列。

我想将字符串保留在最后一个冒号之后,单个单元格中可以有1到4个冒号

谢谢

3 个答案:

答案 0 :(得分:2)

您可以使用

sub(".*:(.*)", "\\1", "Delete:Delete:Delete:Keep")
# [1] "Keep"

以及类似的列:

df$col <- sub(".*:(.*)", "\\1", df$col)

工作原理如下:.*匹配最后一个:之前的所有内容,原因是贪婪匹配。然后(.*)捕获最后一个:之后的所有内容,这就是我们的最终值。

答案 1 :(得分:1)

您也可以使用strsplit

# d is your column
d <- c("Delete:Delete:Delete:Keep","Delete:Delete:Delete:Keep","Delete:Delete:Delete:Keep")

sapply(d, function(x) tail(unlist(strsplit(x, ":")), 1), USE.NAMES = F)
[1] "Keep" "Keep" "Keep"

答案 2 :(得分:1)

或者,

x = "Delete:Delete:Delete:Keep"

sub(".*:(?=[^:]+$)", "", x, perl = TRUE)

sub(".*?(?=[^:]+$)", "", x, perl = TRUE)

regex概念:

懒惰的量词,积极的前瞻性