有没有办法只保留白名单中字符串中定义的字符?

Is there a way to keep only defined charaters in a string from a whitelist?

我正在寻找一种方法来使用包含数字和加号“+”的白名单来替换字符串中的所有其他字符。

string <- "opiqr8929348t89hr289r01++r42+3525"

我首先尝试使用:

gsub("[[:punct:][:alpha:]]", "", string)

但这也排除了“+”:

# [1] "89293488928901423525"

如何从 [:alpha:] 中排除 "+"

所以我的意图是改用白名单:

whitelist <- c("0123456879+")

有没有办法反过来使用 gsub()?因为当我使用我的白名单时,它会识别应该保留的字符。

这个怎么样:

string <- "opiqr8929348t89hr289r01++r42+3525"
gsub("[^0-9+]", "", string)
# [1] "89293488928901++42+3525"

这会将不是 0-9 或加号的所有内容替换为“”。