【问题标题】:Regex match for singular version BUT NOT plural in R [duplicate]正则表达式匹配单数版本但不是 R 中的复数 [重复]
【发布时间】:2020-11-22 02:21:58
【问题描述】:

我可能遗漏了一些非常明显的东西,但是我怎样才能编写有效的代码来获得一个名词的单数版本而不是它的复数形式的所有匹配项?比如我想匹配

天使投资人

天使

但不是

天使

试试天使

如果我尝试

grep("angel ", string)

然后是一个只有单词的字符串 天使 不匹配。

请帮忙!

【问题讨论】:

  • 模式可以像天使\s?
  • 喜欢 grep("angel\s", string)?
  • "天使\s?" ?是模式的一部分,表示可选的空格字符
  • 你想匹配angel这个词吗?或者还有一些其他的词? \bangel\b 对你有用吗?

标签: r regex


【解决方案1】:

使用单词边界标记\\b

x <- c("angel investor", "angel","angels", "try angels")

grep("\\bangel\\b", x, value = T)
[1] "angel investor" "angel" 

【讨论】:

    【解决方案2】:

    您可以尝试以下方法。它仍然相信还有其他很好的方法可以解决这个问题。

    df <- data.frame(obs = 1:4, words = c("angle", "try angles", "angle investor", "angles"))
    
    df %>% 
      filter(!str_detect(words, "(?<=[ertkgwmnl])s\\b"))
    #     obs        words
    # 1   1          angle
    # 2   3 angle investor
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 2022-10-12
      • 2012-10-31
      • 1970-01-01
      • 2015-03-24
      相关资源
      最近更新 更多