regex - R中包含和排除某些字符串的正则表达式

标签 regex r

我正在尝试使用 R 来解析多个条目。我对想要返回的条目有两个要求。我想要所有包含单词 apple 的条目但不要包含单词 orange .

例如:

  • 我喜欢苹果
  • 我真的很喜欢苹果
  • 我喜欢苹果和橘子

  • 我想取回条目 1 和 2。

    我怎么能去使用 R 来做到这一点?

    谢谢。

    最佳答案

    使用正则表达式,您可以执行以下操作。

    x <- c('I like apples', 'I really like apples', 
           'I like apples and oranges', 'I like oranges and apples',
           'I really like oranges and apples but oranges more')
    
    x[grepl('^((?!.*orange).)*apple.*$', x, perl=TRUE)]
    # [1] "I like apples"        "I really like apples"
    

    正则表达式向前看是否除了换行符和子字符串之外没有任何字符 orange如果是这样,那么点 .将匹配除换行符以外的任何字符,因为它被包装在一个组中,并重复( 0 或更多次)。接下来我们找apple以及除换行符以外的任何字符( 0 或更多次)。最后,线的起点和终点 anchor 就位以确保输入被消耗。

    更新 :如果性能有问题,您可以使用以下方法。
    x[grepl('^(?!.*orange).*$', x, perl=TRUE)]
    

    关于regex - R中包含和排除某些字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23943668/

    相关文章:

    php - 如果任何单词的起始字符和结束字符都是?,那么两者都是?应该在 PHP 中删除

    javascript - 如何返回与正则表达式匹配的JavaScript字符串的一部分?

    php - Doctrine Extensions REGEXP 在 Symfony2 中不起作用

    r - 用ggplot绘制表函数对象?

    r - 我可以将observeEvent() 与bsplus::bs_accordion 一起使用吗

    regex - R:反斜线(\)

    java - 如何将这个正则表达式从 Perl 翻译成 Java?

    r - R 3.5.0 是否支持正则表达式\\L?

    'FactoMineR'包中的轮换

    r - 使用两种方法调用 ggplot() 时出现美学错误