【问题标题】:Exact string matching in rr中的精确字符串匹配
【发布时间】:2015-04-17 21:10:21
【问题描述】:

我在 R 中为精确的字符串匹配而苦苦挣扎。我只需要在句子中与搜索的字符串完全匹配:

sentence2 <- "laptop is a great product"
words2 <- c("top","laptop")

我正在尝试这样的事情:

sub(paste(c("^",words2,"$")),"",sentence2)

我只需要用空字符串替换笔记本电脑 - 完全匹配(笔记本电脑)但没有用...

拜托,你能帮帮我吗?提前致谢。

期望的输出:

is a great product

【问题讨论】:

    标签: regex r string-matching


    【解决方案1】:

    你可以试试:

    gsub(paste0("^",words2," ",collapse="|"),"",sentence2)
    #[1] "is a great product"
    

    paste0("^",words2," ",collapse="|") 的结果是 "^top |^laptop ",这意味着“字符串开头的 'top' 后跟空格或字符串开头的 'laptop' 后跟空格”。

    【讨论】:

    • 你也可以用paste0("^",words2," ", collapse = "|")代替两次paste
    • @Floo0,确实如此!谢谢,我会编辑我的答案! :-)
    【解决方案2】:

    如果要匹配整个单词,则可以使用\\b 匹配单词边界。

    gsub(paste0('\\b', words2, '\\b', collapse='|'), '', sentence2)
    
    ## [1] " is a great product"
    

    如果您还想替换相邻的空格,请在模式中添加可选的空格。

    gsub(paste0('\\s*\\b', words2, '\\b\\s*', collapse='|'), '', sentence2)
    
    ## [1] "is a great product"
    

    【讨论】:

      猜你喜欢
      • 2021-10-18
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      相关资源
      最近更新 更多