【问题标题】:gsub is not substituting links in Rgsub 没有替换 R 中的链接
【发布时间】:2014-09-07 13:36:33
【问题描述】:

大家好,我正在尝试做一些简单的事情。出于某种原因,gsub 是个混蛋。

vector <- c("http://aa.bb.com/ss/who/searchpage/tab/message?sort_by=-topicPostDate&page=YOU","http://aa.bb.com/ss/who/searchpage/tab/message?filter=labels location&location=oh-my:DID IT","BLAH BLAH")


subs <- c("http://aa.bb.com/ss/who/searchpage/tab/message?sort_by=-topicPostDate&page=",
          "http://aa.bb.com/ss/who/searchpage/tab/message?filter=labels location&location=oh-my:")

gsub(paste(subs,collapse = "|"),"",vector, fixed = TRUE)

如果在向量中找到,我想用 gsub 说的是用“”替换 sub 中的第 1 项或第 2 项。 任何人?它不必涉及 gsub。我只想要一行代码,如果你在字符串向量中看到这个或那个或这个用“”替换。

【问题讨论】:

  • 当您设置fixed=T 时,| 被解释为模式字符串的一部分。
  • 删除它。还是没有运气。
  • 所以我猜这是因为当我删除它时,它开始解释特殊字符。
  • 删除 | 将无济于事 - 现在模式只是两个字符串的连接。

标签: r gsub


【解决方案1】:

要在正则表达式中使用| 表示“或”,您需要fixed=F

但是,您的模式中的 ? 意味着:之前的字符出现一次或零次,而不是根据需要匹配文字 ?

一种解决方法是在subs 中转义?

subs <- gsub('?', '\\?', subs, fixed=T)
gsub(paste(subs,collapse = "|"), "", vector, fixed=F)
# [1] "YOU"       "DID IT"    "BLAH BLAH"

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 2020-05-07
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多