【问题标题】:gsub() everything except specified characters? [duplicate]gsub() 除指定字符外的所有内容? [复制]
【发布时间】:2016-12-07 08:47:12
【问题描述】:

我如何 gsub() 除了 R 中的指定字符之外的所有内容?

在我的问题中,我有以下字符串...

"the quick brown fox jumps over a lazy dog"

我必须通过删除除 'r' 和 'o' 之外的所有字符来生成一个新字符串并获得以下输出...

"roooro"

假设所有字符都是小写的,我该怎么做。我试过了……

gsub(!"r","",gsub(!"o","",str1))

但是“!”不工作。

【问题讨论】:

标签: regex r


【解决方案1】:

我们需要在[ 中使用^ 来匹配除ro 之外的所有字符。在这里,[^ro]+ 意味着匹配一个或多个不是 'r' 或 'o' 的字符并将其替换为空白 ("")。

gsub("[^ro]+", "", str1)
#[1] "roooro"

如果我们有一个值向量,我们可以使用paste 创建模式

v1 <- c("r", "o")
gsub(paste0("[^", paste(v1, collapse=""), "]+"), "", str1)
#[1] "roooro"

【讨论】:

  • 谢谢 arkun...这对我有用...但是有没有办法将 'r' 和 'o' 指定为向量,而不是直接在 gsub 命令中指定它们。
  • @Gaurav 我相信你有一个值向量,在这种情况下使用paste(更新帖子)
  • 仅供参考:使用 paste 方法时,应注意 ]、\ 和 - 符号,它们可能意味着不同或过早关闭课程。
  • 如果您想删除除“ro”以外的所有内容,而不是单独删除这两个字符,这将如何工作?
  • @Michael 你是说gsub("(ro)(*SKIP)(*FAIL)|.", "", str1, perl = TRUE)
猜你喜欢
  • 2021-05-26
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2021-05-01
相关资源
最近更新 更多